Я читал другие темы политики происхождения здесь, на SO, но я не видел никаких решений, связанных с локальной файловой системой.
У меня есть веб-приложение (в широком смысле слово), которые должны обслуживаться на месте. Я пытаюсь загрузить большой объем данных после того, как пользователь загрузил страницу, в зависимости от того, что они делают на веб-странице. В Firefox 3.5 и IE8 я могу использовать для этого методы jQuery AJAX () и GetScript (), но в Chrome это не удается из-за той же политики происхождения.
XMLHttpRequest
не может загрузитьфайл: //test/testdir/test.js
. Originnull
не разрешеноAccess-Control-Allow-Origin
.
Это происходит, когда я делаю что-то простое, например
$.getScript("test.js");
Это отлично работает в IE и Firefox.
Прочитав об этом, я решил попробовать писать прямо в заголовок документа. В консоли Chrome я набрал следующее:
var head = document.getElementsByTagName("head")[0];
var script =document.createElement('script');
script.id = 'uploadScript';
script.type = 'text/javascript';
script.src = "upload.js";
head.appendChild(script);
Это отлично работает при вставке в консоль - элемент
добавляется в заголовок, оценивается, и контент загружен в DOM.
Я думал, что это удалось, пока я не вставлю этот код в вызов функции. Тот же самый код при вызове из функции добавляет элемент в файл JavaScript, но не оценивает его. Не могу понять почему. Если я использую консоль Chrome для остановки выполнения в методе, в который добавляется элемент, и запускаю приведенный выше код, он не оценивает его. Однако, если я прекращаю выполнение и запускаю тот же код (вставляя его в окно консоли), он работает. Я затрудняюсь объяснить это. Кто-нибудь имел дело с этим раньше?
Я читал следующие сообщения SO, но они не описывают мою проблему:
Способы обойти политику одного и того же происхождения
XMLHttpRequest Origin null is не разрешено Access-Control-Allow-Origin для файла: /// в файл: /// (без сервера)
Межсайтовый XMLHttpRequest
Опять же, мое последнее средство - загрузить все данные при загрузке веб-страницы. Это может вызвать задержку до 10 секунд при загрузке веб-страницы, которая не нужна 90% пользователей приложения.
Спасибо за любые предложения / альтернативы !!!