Мне нужно временно разрешить перекрестный домен XMLHttpRequest. Изменение способа защиты firefox похоже на путь. Но я пробовал с this и this, но они не работали. Кто-нибудь мог настроить это раньше? Благодарю.Настройка Firefox для разрешения запроса на перекрестный домен ajax
ответ
Для современных браузеров, вы можете попробовать следующий подход:
https://developer.mozilla.org/en/HTTP_access_control
Короче говоря, вам нужно добавить следующий код в заголовок ответа на SERVER
(следующее позволяет получить доступ изfoo.example
):
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER
Access-Control-Max-Age: 1728000
Отметьте, что X-PINGOTHER
является пользовательским заголовком, который вставлен JavaScript, и должен отличаться от сайта, чтобы сидеть е.
Если вы хотите, чтобы любой сайт обращался к вашему серверу в Ajax, вместо этого используйте *
.
Edit:
Когда я первый ответил на вопрос по , я на самом деле удар с той же проблемой, и я работал вокруг него, используя на стороне сервера конфигурации.
К этому моменту не было плагина на FF или Chrome.
Однако, теперь у нас есть альтернативы, используя боковой браузер плагин, пожалуйста, проверьте ответ tsds
Это отличный ресурс: http://enable-cors.org/ – Booker
Если я правильно понял, это не решает исходную проблему, если вы не можете изменить сервер – Aras
Обратите внимание, что 'Access-Control-Allow-Origin: * 'не будет работать, если вы также хотели бы использовать параметр XCR' withCredentials' для отправки заголовков файлов cookie. В этом случае вам нужно указать конкретный домен. – dmkc
Вы пробовали использовать запрос jQuery's ajax? Начиная с версии 1.3 jQuery поддерживает определенные типы запросов ajax для перекрестных доменов.
Цитирование из ссылки выше:
Примечание: Все удаленные (не в том же домене ) запросы должны быть указаны , как GET, когда «сценарий» или «JSONP» является DATATYPE (потому что это загружает скрипт с использованием тега сценария DOM). Параметры Ajax , для которых требуется объект XMLHttpRequest , недоступны для этих запросов. Полные и успешные функции: вызывают завершение, но не получают объект XHR; beforeSend и функции dataFilter не вызываются .
По JQuery 1.2, вы можете загрузить JSON данные, расположенные на другом домене, если вы указать обратный вызов JSONP, который может быть сделано так: «? Myurl обратного вызова =». jQuery автоматически заменяет? с правильным именем метода для вызова, , вызывающим ваш обратный вызов. Или, , если вы установите для dataType значение «jsonp», то обратный вызов будет автоматически добавлен к вашему запросу Ajax.
мы используем это для извлечения json-данных, но это html, который включен в страницу, и это только временное значение, поэтому изменение конфигурации firefox должно быть Простейшая вещь сделать – Pablote
Почему downvote? Использование возможностей кросс-домена в каркасе является разумным ответом на этот вопрос. Тот факт, что HTML был необходим, не упоминался в вопросе, как раз в комментарии к моему отзыву. – tvanfosson
Я тоже пытался использовать эту вещь «UniversalBrowswerRead», и это не сработало. Возможно, вы сможете добавить заголовок «allow», но я пока не пытался его сделать. Это довольно ново.
Вы можете найти более подробную информацию here
насчет используя нечто вроде mod_proxy? Затем он смотрит на ваш браузер, как запросы идут на тот же сервер, но они действительно пересылаются на другой сервер.
В этом случае нет возможности временно отключить междоменный XMLHttpRequest, если вы можете временно отключить его, тогда его можно будет отключить навсегда. Это довольно распространенная проблема в современном программировании AJAX и чаще всего решается с использованием технологии, известной как междоменные скрипты.
Идея здесь заключается в том, что если вы вызовете междоменный скрипт, он вернет результаты JavaScript (JSON), которые затем передаются функции на вашем конце.
Вот некоторые примеры кода, чтобы проиллюстрировать, как это может выглядеть с кодом перспективы JavaScript:
function request_some_data() {
var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc";
try {
try{
document.write("<scr"+"ipt type='text/javascript' src='"+s+"'></scr"+"ipt>");
}
catch(e){
var x = document.createElement("script");
x.src = s;
document.getElementsByTagName("head")[0].appendChild(x);
}
}
catch (e) {
alert(e.message);
}
}
Вы затем определить функцию в вашем коде, который принимает данные и на сервере вы «обращаться» обратный вызов случае, здесь на стороне клиента JavaScript:
function myfunc(data) {
alert(data);
}
и на стороне сервера, здесь я хочу дать PHP пример, но это может быть сделано так же, как легко в Java или что-нибудь ваш серверный технология:
<?php
if($_GET["callback"]) {
print($_GET["callback"] . "(");
}
/* place your JSON object code/logic here */
if($_GET["callback"]) {
print(");");
}
?>
Обратите внимание, что то, что вы генерируете на стороне сервера, заканчивается тем, что выполняется JavaScript, который выполняется на стороне клиента.
''
Конечно, вы можете временно отключить его. Например, запустите Chrome с помощью --disable-web-security. –
@JosephLust, пожалуйста, обратите внимание, что это было задано/немного ответило, прежде чем Chrom широко использовал. – Michael
Я обращенную это от file://
. Я бы хотел отправить запросы на два сервера из локального HTML-файла (тестового стенда).
Этот конкретный случай не должен быть опасным для безопасности, но только это позволяет Safari.
Вот best discussion Я нашел проблему.
Спасибо! Думаю, я больше не буду тестировать в Chrome. – tomdemuyt
Я использовал Fiddler в качестве прокси. Fiddler перенаправляет вызовы localhost на внешний сервер.
Я настроил Firefox на использование ручного прокси (127.0.0.1 порт 8888). Скрипач фиксирует вызовы и перенаправляет их на другой сервер, используя фильтры URL.
Если вы просто не хотите тратить свое время на междоменные проблемы во время разработки и тестирования своего приложения, вы можете использовать аддон Force CORS для FF.
UPDATE: Кажется, что этого аддона больше не существует. Но есть еще один вариант - это Chrome extension
Силовые щитки великолепны. Стоит упомянуть, что после установки вам нужно щелкнуть мышью view => toolbars => панель надстройки. Затем кнопка cors будет отображаться в правом нижнем клике, чтобы включить ее. Я разархивировал xpi и вижу, что есть функция переключения, когда кнопка была нажата, но никогда не видеть кнопку. – HMR
«Стоит упомянуть, что после установки вам нужно щелкнуть мышью view => toolbars => панель надстройки». Вы, сэр, являются святыми – NcAdams
Кажется, FF удалил его. – shashwat
Ручное редактирование настроек Firefox - это путь, но неудобно, когда вам нужно делать это часто.
Вместо этого вы можете установить надстройку, которая сделает это за вас одним щелчком мыши.
Я использую CORS everywhere
, который отлично подходит для меня.
Ответы, которые только ссылки на другие ресурсы обычно считаются плохими, поскольку они могут меняться со временем. Пожалуйста, добавьте наиболее релевантную часть в самом ответе. – Qirel
Чтобы междоменное:
- войти
about:config
- принимают быть осторожным
- введите
security.fileuri.strict_origin_policy
в строке поиска - изменение ложных
Теперь вы можете закрыть вкладку. Обычно вы можете сделать запрос перекрестного домена с этой конфигурацией.
Для получения более подробной информации см. here.
Если вам может потребоваться изменение настроек безопасности Firefox, вы не можете использовать сценарий GreaseMonkey? –
Попробуйте в Chrome: http://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome – AgA
Попробуйте включить мой Firefox, чтобы включить кросс-домен с помощью ajax: https: // addons. mozilla.org/en-US/firefox/addon/cross-domain-cors/ –