http пост-запрос с перекрестным происхождением в javascript - PullRequest
5 голосов
/ 22 ноября 2011

У меня проблема с http-звонком в Firefox.Я знаю, что при наличии перекрестного источника firefox сначала делает OPTIONS перед POST, чтобы узнать заголовки контроля доступа.С этим кодом у меня нет проблем:

Net.requestSpeech.prototype.post = function(url, data) {
    if(this.xhr != null) {
        this.xhr.open("POST", url);
        this.xhr.onreadystatechange = Net.requestSpeech.eventFunction;
        this.xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        this.xhr.send(data);
    }
}

Я тестирую этот код с помощью простого HTML, который вызывает эту функцию.Все в порядке, и у меня есть ответ ОПЦИИ и POST, и я обрабатываю ответ.Но я пытаюсь интегрировать этот код с существующим приложением, использующим jquery (я не знаю, если это проблема), когда send (data) выполняется в этом случае, браузер (firefox) делает то же самое, сначалазапрос OPTION, но в этом случае не получает ответ сервера и помещает это сообщение в консоль:

[18:48:13.529] OPTIONS http://localhost:8111/ [undefined 31ms]

Undefined ... неопределенный, потому что не получает ответ, но код тот жеЯ не знаю, почему в этом случае опция не получает ответ, у кого-то есть идея?

Я отлаживаю свое серверное приложение, и ОПЦИИ прибывают нормально на сервер, но кажется, что браузер не ждетответ.

отредактируйте позже: хорошо, я думаю, что проблема заключается в том, что я запускаю простой HTML с тегом SCRIPT, который вызывает метод, который выполняет запрос нормально, но в этом приложении, которое не получает ответ, у меня есть форма, которая выполняет событие onsubmit, я думаю, что событие submit возвращается очень быстро и браузер не успевает получить запрос OPTIONS.

отредактируйте позже, позже: WTF, я решаю проблему, сделаю запрос POST для синхронизации:

this.xhr.open("POST", url, false);

Отправьте ответ очень быстро и не можете дождаться ответа OPTION браузераесть идеи?

1 Ответ

1 голос
/ 23 ноября 2011

Из-за той же политики происхождения, вы не можете отправлять сообщения перекрестного происхождения, Вы можете обойти это, включив сайты в iframes (если есть доступ к домену), оригинальный сайт содержит iframe для внешнего сайта, внутреннее направление является законным.

...