Заголовки HTTP для междоменной службы AJAX REST - PullRequest
6 голосов
/ 30 декабря 2011

Я расследую проблемы Cross-Domains, у меня есть какой-то вызов службы REST. Хром сказал это: Поле заголовка запроса x-required-with не разрешено Access-Control-Allow-Headers Вот что я получил из Сети -> вкладка Заголовки:

Request URL: rest_url_on_other_domain
Request Method:OPTIONS
Status Code:200 OK
Request Headers:
Access-Control-Request-Headers:Origin, x-requested-with, content-type, accept
Access-Control-Request-Method:POST
Origin:http://localhost:8080

Response Headers
Access-Control-Allow-Headers:Content-Type, Accept
Access-Control-Allow-Methods:GET, POST
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Cache-Control:no-cache, no-store
Connection:keep-alive
Content-Length:0
Date:Fri, 30 Dec 2011 11:29:12 GMT
Expires:-1
Pragma:no-cache
Server:nginx/1.0.2

Может кто-нибудь объяснить об этом HTTP-заголовки? В чем проблема - Некоторые проверки заголовков при сбое сервера или некоторые проверки заголовков на стороне клиента (в браузере) не удаются . Какова идея об этих заголовках Access? Объясните подробно в простых словах только для того, чтобы почувствовать остальное, чему я научусь сам. Заранее спасибо!

1 Ответ

11 голосов
/ 30 декабря 2011

То, что вы видите, является предварительным запросом о совместном использовании ресурсов.Метод запроса для такого запроса OPTIONS.Это запрос, который браузер использует для запроса разрешений на отправку фактического запроса.Вы можете узнать больше здесь: http://www.html5rocks.com/en/tutorials/cors/

В этом конкретном случае браузер запрашивает несколько заголовков (в заголовке Access-Control-Request-Headers).Теперь в ответ заголовок Access-Control-Allow-Headers должен содержать все запрошенные заголовки.В случае, если есть больше, чем запрошенные заголовки, браузер не сгенерирует никаких исключений.В этом примере ваш заголовок ответа должен выглядеть следующим образом:

Access-Control-Allow-Headers: Origin, x-requested-with, content-type, accept

Все остальные заголовки ответа выглядят нормально.Как только сервер отправит этот ответ, браузер отправит второй запрос, который является фактическим запросом данных.

...