Последние пару дней компания A боролась с CORS, в частности с запросами предварительной проверки в конфигурации, отличной от CORS. Я отправляю запрос из приложения SPA через axios (domain.com:80) в API отдыха (domain.com:80/api) и его классифицируется как запрос CORS . Локально, с той же настройкой, запросы обрабатываются и не запускают предполетные.
В моем исследовании один и тот же запрос происхождения должен иметь:
- тот же домен
- тот же субдомен
- тот же порт
- тот же протокол
Я думаю, что моя производственная среда проверяет все вышеперечисленное, но что-то говорит об обратном.
Моя среда размещается у провайдера с общим хостом следующим образом:
SPA (Vue) - http: / domain: 80 / company-name /
API (Laravel) - http: / domain: 80 / company-name / api
Я уже пробовал:
- Клонирование среды локально (работает нормально - не отправляет предпечатные запросы)
- Включить / отключить Access-Control-Allow-Headers
- Если честно, я даже не знаю, что попробовать дальше: |
Решение этой проблемы сделает мое приложение на 100% быстрее, поэтому для меня это очень важно. Но в этом просто нет смысла. Может, я упускаю что-то очевидное.
Возможно, это может быть какая-то вещь, связанная с прокси, которую делает мой провайдер общего хостинга. Но даже тогда я бы не знал, как это проверить.
Пример предпечатного запроса (из вкладки сети в инструментах разработчика):
Общие
URL-адрес запроса: http: / domain / company-name / api / perfil / 3
Метод запроса: OPTIONS
Код состояния: 200 OK
Удаленный адрес: 185.200.153.100:80
Политика реферера: без реферера при понижении версииЗаголовки ответа
Access-Control-Allow-Headers: AUTHORIZATION
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin: http: / domain
Access-Control-Max-Age: 25200
Cache-Control: без кеша, частный
Соединение: закрыть
Content-Length: 0
Content-Type: text / html; charset = UTF-8
Дата: Сб, 27 апреля 2019 г. 18:28:40 GMT
Сервер: ApacheЗаголовки запроса
Отображаются предварительные заголовки
Заголовки запроса-контроля доступа: авторизация
Метод-запроса-контроля доступа: GET
Источник: http: / domain < br> Referer: http: / domain / company-name / perfis
User-Agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 73.0.3683.103 Safari / 537.36
Пример запроса (сразу после предполетного ответа):
Общие
URL-адрес запроса: http: / domain / company-name / api / perfil / 3
Метод запроса: GET
Код состояния: 200 OK
Удаленный адрес: < strong> 185.200.153.100:80
Политика реферера: без реферера-при-пониженииЗаголовки ответа
Accept-Ranges: байты
Access-Control-Allow-Origin: http: / domain
Access-Control-Expose-Headers: *
Возраст: 0
Cache-Control: no-cache, private
Соединение: keep-alive
Content-Type: application / json
Дата: Сб, 27 апреля 2019 г., 18:28:41 GMT
Сервер : Apache
Кодирование передачи: фрагментировано
Варьируется: Происхождение, Авторизация
Через: 1.1 varnish-v4
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-Varnish: 46418125Заголовки запроса
Принять: application / json, text / plain, /
Авторизация: предъявитель {токен}
Источник: http: / domain
Referer: http: / domain / company-name / perfis
User-Agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36
(KHTML, как Gecko) Chrome / 73.0.3683.103 Safari /537.36
домен / .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(api)($|/) - [L]
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css|woff2)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
домен / api / .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Если нужны другие данные, не стесняйтесь спрашивать.
document.defaultView.location.origin
в консоль. - person sideshowbarker   schedule 29.04.2019