jQuery: я получаю запрос OPTIONS вместо GET - PullRequest
16 голосов
/ 16 ноября 2009

Я использую простой jQuery

$.get( .... );

Здесь вместо получения ответа GET я получаю ОПЦИИ. (Проверено в Firebug Net)

Тот же код работает в Safari. Похоже, какая-то проблема с Firefox.

Любой обходной путь / решения для решения этой проблемы ..

Спасибо

Kurund

Ответы [ 5 ]

28 голосов
/ 22 января 2010

Запрос OPTIONS, который вы видите, является предварительным запросом, вы можете прочитать об этом здесь:

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

Есть два решения для решения проблемы (как упомянуто выше):

  • реализовать ответ на запрос OPTIONS с соответствующими Access-Control-* заголовками
  • использовать JSONP запрос вместо простого JSON
1 голос
/ 31 мая 2010

У меня была та же проблема, причина, по которой я понял, была в разделе html <head>. Я установил базовый элемент на

.
<base href="http://local.develepment.url" />

Который я изменил на

<base href="http://<?php echo $_SERVER['HTTP_HOST']?>/" />
1 голос
/ 20 января 2010

Это, вероятно, связано с ограничениями на выполнение междоменного XMLHttpRequests Javascript. Это обычно не допускается по соображениям безопасности. См. Вышеупомянутый вопрос или аналогичный вопрос, который я задал .

Чтобы решить эту проблему:

  • Напишите серверный компонент (использующий PHP или любой другой), который будет извлекать удаленный ресурс от имени вашего запроса AJAX, или
  • Выполните вызов JSONP: см. http://www.insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html (или охоту вокруг StackOverflow для JSONP):)

Надеюсь, это поможет!

0 голосов
/ 18 марта 2018

Вы отправляете запрос на кросс-домен .

Для междоменных запросов, устанавливая тип содержимого в любое значение, кроме application / x-www-form-urlencoded , multipart /данные формы или text / plain заставят браузер отправить на сервер запрос preflight OPTIONS .

Так что вам может понадобитьсяизменить укажите contentType , чтобы избежать запроса OPTION.Пример: -

$.ajax({
    url: "crossdomainurl",
    type: "GET",
    contentType: 'text/plain'
}); 
0 голосов
/ 18 октября 2010

Надеюсь, это кому-нибудь поможет: http://kurund.com/blog/2010/09/09/how-to-call-external-site-url-using-jquery-ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...