我用C#创建了一个WebService。所有GET方法都可以正常工作。
现在我需要提供一些 POST 方法。通过 C# 调用它时,它可以正常工作。然后我尝试用JavaScript编写一个小的html页面来调用我的方法。但是在那里我收到一个 CORS 错误("预检通道未成功")。
我已经将以下部分添加到我的 web.config 文件中:
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
</customHeaders>
可悲的是,它仍然不起作用。我做错了什么?
您在这里拥有的并不是处理 CORS 请求的有效方法。 问题是这会将 CORS 标头添加到所有响应中,但浏览器将使用OPTIONS
请求来检查 CORS 标头。 如果您还为所有 API 端点实现OPTIONS
请求,这将起作用。
更好的选择是使用 CORS 框架之一,例如:在 Web API 2 中为 ASP.NET WebAPI 2 启用 ASP.NET 跨源请求。 这种类型的框架将为您截获OPTIONS
请求并提供适当的响应,而无需为每个终端节点手动创建 2 个路由。