локальный AJAX-вызов на удаленный сайт работает в Safari, но не в других браузерах
Я поддерживаю веб-сайт, который использует Javascript. Скрипт использует jQuery и загружает некоторый контент с сервера, на котором обычно размещается сайт.
Просто для удобства, поддерживая сайт, я запускаю локальную копию сайта на моем iMac. Это прекрасно работает, когда я использую Safari. Но Firefox, Opera и Chrome отказываются работать. Я думаю, это из-за междоменной политики. (Я не смог проверить это с IE, потому что IE должен работать на виртуальной машине на моем iMac, поэтому по этой причине невозможно получить доступ к каким-либо локальным файлам)
Есть ли настройка в Firefox и других браузерах, где я могу сказать браузеру, что можно загружать файлы ajax, расположенные на удаленном сервере, с локальной html-страницы с локальным javascript?
В двух словах: это моя html-страница:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>some title</title>
<link rel="stylesheet" type="text/css" href="../css/stylesheet.css">
<script src="../js/jquery-2.1.3.min.js"></script>
<script src="../js/myScript.js"></script>
</head>
<body>
<!-- some content with a div-container to receive the ajax-content -->
</body>
</html>
Это myScript.js:
var errorMsg = function (msg) {
//insert the message into the html-page
};
var JSONerror = function (jqXHR, textStatus, errorThrown ) {
var msg = 'JSON-answer: '+jqXHR.responseText;
msg += '<br>'+'JSON-Errorstatus: '+textStatus;
if ($.type(errorThrown) === 'string') {
msg += '<br>'+'Error: '+errorThrown;
}
errorMsg(msg);
};
var JSONreceive = function (JSONobj, StatusString, jqXHR) {
//insert the data in JSONobj into the html-page
}
var StartAJAX = function () {
$.ajax({
url: 'http://my.domain.tld/cgi-bin/myPerlScript.pl',
data: "lastID=" + lastID
+ '&qkz=' + Math.random(),
dataType: "json",
success: JSONreceive,
error: JSONerror
});
};
Существует также прослушиватель событий, который прослушивает прокрутку страницы и изменяет ее размер и проверяет некоторые другие ограничения (например: уже выполняется ajax-вызов?). Этот слушатель звонкиStartAJAX
.
Когда это вызываетStartAJAX
на локальной копии моей страницы (file: /// User / ...) в Safari я прекрасно вставляю Ajax-контент в мой html-документ. в других браузерах я получаю сообщение об ошибке, вставленное в html-страницу. Это:
JSON-ответ: не определено
JSON-Errorstatus: ошибка
Ошибка:
Почему это работает в Safari, а не в Firefox, Chrome и Opera?
Как я могу заставить эти браузеры работать?
(Мне нужно протестировать его во всех браузерах, потому что все браузеры по-разному отображают один и тот же html-domument, но я не хочу загружать все файлы на сервер после каждого изменения, просто чтобы проверить его.)
РЕДАКТИРОВАТЬ:Прочитав некоторые ответы, я хочу прояснить что-то, чего я явно недостаточно прояснил:
Я ищу настройки в веб-браузерах
Я НЕ буду изменять настройки моего удаленного веб-сервера (Apache)Я НЕ буду манипулировать какими-либо файлами на моей удаленной машине (.htaccess)Я не буду устанавливать веб-сервер на моем локальном iMacЯ НЕ буду менять код AJAX-вызовов в моих Javascript-файлахЯ НЕ буду изменять код Perl-Scripts на моем удаленном СервереЯ могу сказать вам, почему:
Я просто делаю короткое сопровождение, и мне лень загружать каждый измененный файл на удаленную машину после того, как я его отредактировал. Настройки веб-сервера подходят для реальной работы. Я не хочу их менять (и, может быть, забуду об изменениях до окончания моей работы). То же самое для сценариев: те части, которые некоторые из вас хотят изменить, работают нормально, как и сейчас. Нет смысла трогать Ajax-Calls, потому что в производительной среде с ними все в порядке.
Все, что я хочу, - чтобы эти глупые браузеры Firefox, Opera и Chrome вели себя как Safari и правильно обрабатывали Ajax-вызовы.
КСТАТИ:Кто-нибудь может объяснить, что такое рискованный вызов данных через Ajax из другого домена в Firefox, Opera или Chrome, хотя кажется, что в Safari делать то же самое безопасно?