【发布时间】:2020-06-06 18:13:06
【问题描述】:
我该怎么做才能让它运行?
后端:ASP .Net Web APP - API、IIS
前端:Vue
错误:
提琴手:
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 政策。
- 只有在使用一些不安全的标头/方法/内容类型时才会执行预检请求。
请仅在您了解此问题的情况下回答(对此我很抱歉,但在查看类似问题时,repsonses 大多是“尝试这个”和“尝试那个”,这使得很难确定根本原因并促进一般理解)。感谢您考虑这一点。
【问题讨论】:
-
首先您应该从您的 axios 配置中删除
"Access-Control-Allow-Origin": "*":这是一个响应标头,不应包含在请求中。控制台中的错误消息表明 CORS 预检OPTIONS请求未通过 CORS 检查。预检需要 200-299 范围内的状态代码才能通过检查。查看浏览器开发人员工具的“网络”选项卡,了解服务器返回的确切内容,这将为了解实际情况提供重要线索。 -
我已经更新了更多信息以及我所做的最新更改。似乎我对预检请求根本没有任何回应?