2016-05-26 4 views
0

Как я знаю, если запрос cors поставляется с некоторыми дополнительными наборами заголовков, первый сервер должен обработать его.следует закрыть соединение запроса перед полетом Cors при отправке ответа?

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

Access-Control-Allow-Headers ... - Список поддерживаемых заголовков запросов, разделенных запятыми.

например, предположим, моя просьба предварительно рейс

OPTIONS /cors HTTP/1.1 
Origin: http://api.bob.com 
Access-Control-Request-Method: PUT 
Access-Control-Request-Headers: X-Custom-Header 
Host: api.alice.com 
Accept-Language: en-US 
Connection: keep-alive 
User-Agent: Mozilla/5.0... 

Тогда из серверной части я пошлю ответ

Access-Control-Allow-Origin: http://api.bob.com 
Access-Control-Allow-Methods: GET, POST, PUT 
Access-Control-Allow-Headers: X-Custom-Header 
Content-Type: text/html; charset=utf-8 

Мой вопрос - я должен закрыть соединение на стороне сервера, время мы отправляем предполетный ответ клиенту?

Еще одна вещь, как я могу кэшировать предполетный запрос для всех других различных последующих запросов?

Благодаря

ответ

0

Вы можете кэшируют OPTIONS запрос, используя

Access-Control-Max-Age

заголовок. Прикрепите его к коллекционной коллекции ответа OPTIONS.

Но, тем не менее, должен быть сделан первоначальный запрос ОПЦИИ пользовательским агентом (браузером), вы не можете этого избежать. Но все дальнейшие запросы OPTIONS кэшируются и не выдаются серверу. Не нужно закрывать соединение.

Access-Control-Allow-Origin: http://hello-world.example

Access-Control-Max-Age: 3628800

Access-Control-Allow-методы: PUT

как объяснено here , поиск по

может иметь следующие заголовки fied

, чтобы перейти в обозначенный текстовый раздел.

+0

другие отдельные последующие запросы снова запросят запрос перед полетом с помощью заголовков Access-Control-Allow-Headers. – WitVault

+0

Вы не можете кэшировать начальный отдельный запрос, только дальнейшие запросы OPTION для отдельных. Это браузер. – Legends

+0

Это ответ, никакое другое обходное решение невозможно :-) – Legends