2014-09-29 2 views
0

Я пытаюсь отправить HTTP-запрос с несколькими доменами с помощью метода PUT с помощью AJAX.Отправка запроса кросс-домена HTTP с помощью AJAX

Для этого я использую это:

$.ajax({ 
    url: ipv6Nodo+"/config?param=led",   
    crossDomain: true, 
    type: 'PUT', 
    data: "ls=ON", 
    success: function(data) { 
     // Do something with the result 
     console.log(data); 
    } 
}); 

Я нюхаю на середине, и я вижу, что я на самом деле, отправив запрос с методом OPTIONS. Это не проблема, потому что на сервере я могу принимать PUT или OPTIONS аналогичным образом. Проблема в том, что запрос полезной нагрузки пуст, нет ls=ON, как я этого хочу. Если я отправлю этот запрос в тот же домен, я могу видеть полезную нагрузку. В чем проблема?

Заранее спасибо

+0

* «Бросьте запрос» * ?? – epascarello

+0

Сначала они задают запрос параметров, который спрашивает, разрешено ли PUT. Вы не должны обрабатывать запрос опций ... – epascarello

ответ

0

Там нет полезной нагрузки к OPTIONS запроса, используемого с Cross Origin Resource Sharing. Это запрос «предполетный», чтобы узнать, разрешает ли сервер CORS с вашего места происхождения. Как только вы ответите на запрос OPTIONS с правильными заголовками CORS, вы получите запрос PUT с данными.

Смотрите ссылку для подробностей, но в основном:

  • браузер посылает OPTIONS с заголовками запроса CORS.
  • Сервер решает, является ли запрос приемлемым для этого источника, и если это отвечает соответствующими заголовками ответа CORS.
  • Браузер отвечает фактическим PUT.

Это прозрачно для вашего клиентского кода ajax (но не для кода сервера).

+0

Итак, если я включу CORS на сервере, я должен будет отправить запрос PUT – oscarvady

+0

Если вы используете браузер, который [правильно поддерживает CORS] (http: // caniuse .com/# feat = cors), да. Таким образом, не IE8 или IE9, которые поддерживают его, а через специальный объект XDomainRequest, а не XMLHttpRequest, несогласованность браузера, которую jQuery не сглаживает (хотя, если вы ищите, вы можете найти код для этого). –

+0

Не могли бы вы рассказать мне, как ответ CORS от сервера? Я знаю, что он должен иметь заголовок 'Access-Control-Allow-Origin:', но я не знаю, как должно быть все остальное. В основном я хотел бы знать, является ли это HTTP/1.1 200OK или аналогичным. – oscarvady

Смежные вопросы