Настройка Firefox для включения запроса ajax для перекрестного домена

Мне нужно временно разрешить перекрестный домен XMLHttpRequest. Изменение способа защиты firefox похоже на путь. Но я пробовал с этот и этот, но они didnt Работа. Кто-нибудь мог настроить это раньше? Спасибо.

Ответ 1

Для современных браузеров вы можете попробовать следующий подход:

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:

Когда я впервые ответил на вопрос 2009, я на самом деле столкнулся с той же проблемой, и я работал вокруг него, используя конфигурацию на стороне сервера.

К этому моменту не было плагина на FF или Chrome.

Однако теперь у нас есть альтернативы, использующие плагин для браузера, пожалуйста, проверьте ответ tsds

Ответ 2

Если вы просто не хотите тратить свое время на междоменные проблемы во время разработки и тестирования своего приложения, вы можете использовать addon Force CORS для FF.

UPDATE: похоже, что этот аддон больше не существует. Но есть и другой вариант - это расширение Chrome

Ответ 3

Вы пытались использовать jQuery ajax запрос? Начиная с версии 1.3 jQuery поддерживает определенные типы запросов ajax для перекрестных доменов.

Цитата из приведенной выше справки:

Примечание. Все пульт (не на одном домен) должны быть указаны как GET, когда 'script' или 'jsonp' является dataType (потому что он загружает scriptиспользуя тег DOM script). Варианты Ajax которые требуют объекта XMLHttpRequest для этих запросов недоступны. Полные и успешные функции вызвали завершение, но не получить объект XHR; перед отправкой и функции dataFilter не называется.

Как и в jQuery 1.2, вы можете загрузить JSON данные, расположенные в другом домене, если вы укажите обратный вызов JSONP, который может быть сделано так: "myurl? callback =?". jQuery автоматически заменяет? с правильным именем метода для вызова, вызывая указанный обратный вызов. Или, если вы установите для параметра dataType значение "jsonp" обратный вызов будет автоматически добавлен к вашему запросу Ajax.

Ответ 4

Вот что, нет способа "временно" отключить междоменный XMLHttpRequest, если вы можете временно отключить его, тогда его можно отключить навсегда. Это довольно распространенная проблема в современном программировании AJAX и чаще всего решается с использованием технологии, известной как междоменные скрипты.

Идея заключается в том, что если вы вызываете кросс-домен script, он возвращает результаты 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, который выполняется на стороне клиента.

Ответ 5

Я тоже пытался использовать эту вещь "UniversalBrowswerRead", и это не сработало. Возможно, вы сможете добавить заголовок "allow", но я пока не пытался его сделать. Это довольно новый.

Вы можете найти дополнительную информацию здесь

Ответ 6

Я столкнулся с этим от file://. Я бы хотел отправить запросы на два сервера из локального HTML файла (тестовый стенд).

Этот конкретный случай не должен быть опасным для безопасности, но только Safari позволяет это.

Вот лучшее обсуждение Я нашел проблему.

Ответ 7

Как насчет использования чего-то вроде mod_proxy? Затем он смотрит на ваш браузер, как запросы идут на тот же сервер, но они действительно отправляются на другой сервер.

Ответ 8

Я использовал Fiddler как прокси. Fiddler перенаправляет вызовы localhost на внешний сервер.

Я настроил Firefox на использование ручного прокси (127.0.0.1 порт 8888). Fiddler захватывает вызовы и перенаправляет их на другой сервер, используя фильтры URL.

Ответ 9

Чтобы разрешить кросс-домен:

  • введите about:config
  • Примите осторожность.
  • введите security.fileuri.strict_origin_policy в строке поиска
  • изменить на false

Теперь вы можете закрыть вкладку. Обычно вы можете сделать запрос перекрестного домена с этой конфигурацией.

Подробнее см. здесь.

Ответ 10

Вручную редактирование настроек firefox - это путь, но это неудобно, когда вам нужно делать это часто.

Вместо этого вы можете установить надстройку, которая сделает это за вас одним щелчком мыши.

Я использую CORS everywhere, который отлично работает для меня.

Вот ссылка на установщик