CORS - Ответ на предполётный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok - PullRequest
0 голосов
/ 22 февраля 2020

Что я могу сделать, чтобы это работало?

Серверная часть: ASP. Net Веб-приложение - API, IIS

Внешний интерфейс: Vue

Ошибка:

enter image description here

enter image description here

Скрипач:

enter image description here

web.config:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="x-requested-with, Content-Type, origin, authorization, accept, client-security-token" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    <add name="Access-Control-Max-Age " value="1000" />
  </customHeaders>
</httpProtocol>
<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" /> 
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers>

Выводы на данный момент:

  • Ошибка исчезнет, ​​если я пропущу отправку данных в почтовом запросе ,
  • Я предполагаю, что это потому, что я больше не буду нарушать политику SOP, когда нет данных поста.
  • Предварительный запрос выполняется только при использовании некоторых небезопасных заголовков / методов / типов контента.

Пожалуйста, отвечайте только в том случае, если у вас есть понимание этого вопроса (извините за это, но, глядя на похожие вопросы, ответы очень похожи на "попробуй это" и "попробуй то", что затрудняет определить root причину и улучшить общее понимание). Спасибо за рассмотрение этого вопроса.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Я нашел решение здесь Запрошенный ресурс не поддерживает http-метод 'OPTIONS'.?

Я нашел его после использования fiddler, чтобы получить более подробную информацию об ошибках.

Удаление обеих строк в соответствии с предложением заставит его работать в среде разработки. Однако при развертывании в производство необходимо снова добавить последнюю строку, чтобы она заработала.

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

<handlers>
   <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<!--   <remove name="OPTIONSVerbHandler" /> -->
   <remove name="TRACEVerbHandler" />
   <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
 </handlers>

Разрешение всего не оптимально при создании реального решения для производства.

0 голосов
/ 22 февраля 2020

если вы находитесь в Mozilla, вам следует рассмотреть возможность увидеть расширение "CORS везде" на https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/ Это может решить вашу проблему.

РЕДАКТИРОВАТЬ: ОК, не надо не делай этого, прости за мое невежество.

...