Ваша текущая конфигурация CORS допускает запросы GET
, HEAD
и POST
из всех источников.
Однако некоторые браузеры отправляют предварительный запрос 1 чтобы проверить, какие HTTP-запросы поддерживаются сервером.
Предварительный запрос - это запрос OPTIONS
, который выполняется с определенными заголовками.Ваша текущая конфигурация имеет только запросы предварительной проверки с разрешенным заголовком авторизации
Это означает, что браузеры, такие как Google Chrome, которые отправляют запрос предварительной проверки, не будут работать в этой заметке.
Вы должны включить записи для всех заголовков, отправленных впредварительный запрос в качестве разрешенного заголовка в вашей конфигурации CORS. 2
Я предлагаю ограничить CORSRule
только теми источниками, которые вы рассматривали.Продолжайте изменять правила до тех пор, пока не встретите ограничительную политику, соответствующую вашему приложению. 3
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/938934/">
<CORSRule>
<AllowedOrigin>http://localhost:8080</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>/replace with another preflight header/</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://html2canvas.herzen.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>OPTIONS</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>/replace with another preflight header/</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Вы можете просмотреть заголовки ответа для предварительного запроса, когда вы проверяете его на вкладке сети вашего браузера.
Вы также можете указать подстановочный знак для соответствия разрешить все заголовки в запросе предварительной проверки.
<AllowedHeader>*</AllowedHeader>