CORS - 对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态

xhi*_*ist 5 asp.net api cors vue.js

我该怎么做才能让它运行?

后端:ASP .Net Web APP - API、IIS

前端:Vue

错误:

在此输入图像描述

在此输入图像描述

提琴手:

在此输入图像描述

网络配置:

<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>
Run Code Online (Sandbox Code Playgroud)

到目前为止的结论:

  • 如果我在发布请求中跳过发送数据,错误就会消失。
  • 我认为这是因为当发布数据不存在时我不再违反 SOP 政策。
  • 仅当使用某些不安全的标头/方法/内容类型时才会执行预检请求。

请仅在您了解此事的情况下回答(我对此感到抱歉,但在类似问题中查看,答复大多是“尝试这个”和“尝试那个”,这使得很难确定根本原因并提高总体水平理解)。感谢您考虑这一点。

xhi*_*ist 5

我在这里找到了解决方案请求的资源不支持http方法“选项”。?

我在使用 fiddler 获得更好的错误详细信息后发现了它。

按照建议删除这两行将使其在开发环境中工作。但是,在部署到生产时,必须再次添加最后一行才能使其正常工作。

难道是想在程序中进行更详细的CORS设置时,需要第一个handler吗?请随意改进这个答案。

<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>
Run Code Online (Sandbox Code Playgroud)

在构建真正的生产解决方案时,允许一切并不是最佳选择。