Подтвердить что ты не робот

Как вы отправляете собственный заголовок в междоменном (CORS) XMLHttpRequest?

Я пытаюсь отправить запрос CORS на полезную нагрузку JSON. Я управляю как сервером, так и клиентом.

Я следую здесь: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control

Сервер имеет настраиваемый заголовок, который должен быть отправлен вместе с каждым запросом. Поэтому этот настраиваемый заголовок делает запрос "не простым", и поэтому запрос должен быть предварительно запрограммирован с помощью запроса OPTIONS.

Я вижу, как jquery делает запрос OPTIONS, но он не отправляет пользовательский заголовок.

Методы, которые я пробовал:

В обоих случаях браузер не отправляет пользовательский заголовок.

Я использую FF 17.0.1, jquery 1.8.3.

4b9b3361

Ответ 1

Ваша проблема заключается не в jquery, а в как работает CORS. Обратный вызов beforeSend, вероятно, работал так, как ожидалось... но браузеры не будут отправлять пользовательские заголовки в предполетные запросы, несмотря ни на что. Это по дизайну; целью предпродажного запроса является определение того, какую информацию пользовательскому агенту (браузеру) разрешено отправлять за пределы "простого" материала, определенного в спецификации CORS. Таким образом, для того, чтобы пользователь мог отправлять любые непростые данные (например, ваш пользовательский заголовок), поскольку часть запроса предполетности является самоотверженной.

Чтобы проинструктировать useragent включить ваш пользовательский заголовок в настоящий запрос CORS, включите Access-Control-Allow-Headers header в свой предполетный ответ. Стоит отметить, что если вы не слишком беспокоитесь о том, какие заголовки передают useragent, я считаю, что вы можете просто откликнуть значение поля заголовка запроса Access-Control-Request-Headers в качестве значения Access-Control-Allow-Headers, которое вы отправляете в ответ.

Вы также можете включить некоторые другие заголовки Access-Control-Allow-*, определенные в разделе синтаксиса спецификации.

См. также CORS - Как выполнить предпросмотр http-запроса?

См. также пример предпросмотра Mozilla CORS, который показывает эти заголовки в действии.