Снова головная боль CORS ... Ответ на предполётный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok - PullRequest
0 голосов
/ 09 мая 2019

У меня были похожие вопросы, но никто не решил мою проблему. Я запускаю приложение javascript на веб-сервере, который должен получить доступ к URL-адресу в другом поддомене. Браузер - это Chrome, и CORS всегда там, что мешает корректному выполнению моего Ajax-запроса.

Я отправляю запрос POST с сайта fiorisandbox.example.com для получения данных с сайта citrixtest.example.com. Поскольку я использую специальные заголовки Citrix, я ожидаю предварительного запроса. Этот предпечатный запрос никогда не выполняется, потому что 404 не найдены ошибки. Подробности в консоли показывают проблему CORS:

XHRInterceptor-dbg.js:63 Access to XMLHttpRequest at https://citrixtest.example.com/Citrix/UATWeb/Home/Configuration from origin https://fiorisandbox.example.com has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Подробности запроса:

Request URL: https://citrixtest.example.com/Citrix/UATWeb/Home/Configuration
Request Method: OPTIONS
Status Code: 404 Not Found
Remote Address: XX.XX.XX.XX:443
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: *
Provisional headers are shown
Access-Control-Request-Headers: x-citrix-isusinghttps
Access-Control-Request-Method: POST
Origin: https://fiorisandbox.example.com
Referer: https://fiorisandbox.example.com/sap/bc/ui5_ui5/sap/zopencitrix/index.html?sap-client=100&sap-ui-language=EN&sap-ui-xx-devmode=true
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36

У нас есть IIS 8.5 на сервере citrixtest, поэтому я собрал все customHeaders, необходимые для CORS, из web.config:

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, PUT" />
<add name="Access-Control-Allow-Headers" value="*" />

Но, насколько я вижу, глагол OPTIONS не возвращает ожидаемый код 200 OK.

Есть идеи, что нужно в IIS для возврата кода состояния из глагола OPTIONS?

Проверено много вещей:

  • Удалить / Изменения в отображении обработчика 'OPTIONSVerbHandler'
  • Добавлено правило авторизации для анонимного доступа к ОПЦИЯМ
...