Ошибка междоменной безопасности плагина в Chrome jQuery? - PullRequest
2 голосов
/ 13 апреля 2011

Я пытаюсь использовать jQuery Form Plugi n для обработки загрузки файлов в виде ajax.

Все работает, пока у меня нет ввода [type = file] в виде.

Когда я добавляю тип ввода файла в форму, он загружает файл и работает так, как предполагается в FireFox, но я получаю эту ошибку в Chrome:

НебезопасноJavaScript пытается получить доступ к фрейму с URL http://swbdev.net:8888/inc/ajax/edit_page/ из фрейма с URL http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements. Домены, протоколы и порты должны совпадать.

В нем четко указано, что домен, протоколы и порты должныматч.Я что-то упускаю, в той же ошибке отображаются два URL-адреса и совпадают домен, протокол и порт?

Вот JavaScript, вызывающий плагин:

    <script type="text/javascript">
$(document).ready(function() { 
    var options = { 
        success:    function(data) { 
            alert(data); 
        },
        dataType: 'html',
        url: '/inc/ajax/edit_page/'
    }; 
    $('#add_elements_form').ajaxForm(options); 
 });
</script>

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

В FireFox теперь также происходит сбой, не знаю, почему он работал раньше, но вот ошибка в FireFox:

В * 1029 отказано в разрешенииhttp://swbdev.net:8888 для получения свойства Location.href

Он указывает на эту область кода в плагине:

            function cb() {
            if (xhr.aborted) {
                return;
            }
            var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
            if (!doc || doc.location.href == s.iframeSrc) {
                // response not received yet
                if (!timedOut) return;
            }
            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
            var ok = true;

В частности, эта строка:

 if (!doc || doc.location.href == s.iframeSrc

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Недавно я столкнулся с той же проблемой при загрузке файла jquery. Ошибка была такой же, как у Дэвида Б

"Небезопасная попытка JavaScript для доступа к фрейму с URL http://swbdev.net:8888/inc/ajax/edit_page/ из фрейма с URL http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements. Домены, протоколы и порты должны совпадать."

В моем случае и URL-адрес вызывающей страницы, и URL-адрес загрузки файла указывали на xxx.mydomain.com, но при загрузке вызывающей страницы один из javascript устанавливал document.domain в mydomain.com и вызывал ошибку. Проверка на document.domain после загрузки вызывающей страницы выявила проблему и исправила ее, удалив строку document.domain в javascript для xxx.mydomain.com

0 голосов
/ 13 апреля 2011

Определенно странно. Я бы попытался установить все это в «POST», так как input [type = file] потребует этого. Конечно, это должно работать даже смешанно, но попробуйте.

$(document).ready(function() { 
    var options = { 
        success:    function(data) { 
            alert(data); 
        },
        dataType: 'html',
        type: 'POST',   // <-- This was added
        url: '/inc/ajax/edit_page/'
    }; 
    $('#add_elements_form').ajaxForm(options); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...