2017-02-09 12 views
1

Теперь у нас есть запрос CORS (получить, заголовок диапазон)CORS Access-Control-Max-Age работает для того же происхождения или просто же URL запроса

get http://example.com/01.mv (request a1) 
get http://example.com/01.mv (request a2) 
get http://example.com/02.mv (request b1) 
get http://example.com/02.mv (request b2) 

Перед отправкой запроса a1, браузер отправляет запрос OPTIONS , , и мы можем найти Access-Control-Max-Age: 3600 в ответе.

Вот мой вопрос:

в запрос а2, запрос OPTIONS будет отправлен?

в запросе b1, запрос OPTIONS будет отправлен?

в запросе b2, запрос OPTIONS будет отправлен?

ответ

1

Краткий ответ: Браузеры применяют Access-Control-Max-Age для каждого URL-адреса, а не для каждого источника.

по запросу a2, запрос OPTIONS будет отправлен?

Нет, потому что из-за Access-Control-Max-Age заголовка для этого URL, браузер будет кэшировать результаты CORS предполетных , но только для этого http://example.com/01.mv URL.

в запросе b1, запрос OPTIONS будет отправлен?

Да, потому что это для отличается URL, http://example.com/02.mv.

Протокол CORS работает, делая preflights за URL, а не за происхождение, поэтому значение этого другого Access-Control-Max-Age для URL запроса a1 не не относится к различным b1 URL.

в запросе b2, запрос OPTIONS будет отправлен?

Нет, по той же причине он не послал запрос a2: из-за Access-Control-Max-Age браузер будет кэшировать результаты предполетной CORS для http://example.com/02.mv.


Насколько то, что спецификации CORS определяет соответствующие требования здесь, если проследить шаги в спецификации они отведут Вас к определению в спецификации на срок cache match:

Существует спичка кэша для запроса если происхождение является запрос «s происхождений, URL является запросом» s текущего URL ...

Других слова, в кэше предполетный будет использоваться только для запроса, если как:

  1. происхождение по просьбе совпадает начало для этого кэшируется предполетной
  2. и запроса-х URL совпадает с URL-адресом для кэшированного предполета
+0

Почему b1 отправит запрос OPTIONS? они имеют одинаковое происхождение 'http: // example.com'. – look

+0

Поскольку предварительные предписания OPTIONS инициируются * по URL-адресу *, а не по-началу. Браузеры не принимают результаты предполета, полученные от ответа на один URL-адрес из определенного источника, и повторно используют его для запросов ко всем другим URL-адресам из этого источника. Это не имеет смысла. Во-первых, владелец второго URL-адреса может полностью отличаться от владельца первой спецификации URL. Таким образом, разные владельцы должны иметь контроль над поведением CORS для своего собственного URL-пространства. И т. Д. – sideshowbarker

+0

@look В конце моего ответа я теперь добавил ссылку на соответствующую часть авторитетного спектакля для CORS. – sideshowbarker

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

  • Нет связанных вопросов^_^