asp.net web api 跨域访问 OPTIONS 405

发布于 2022-09-05 03:52:19 字数 1041 浏览 20 评论 0

问题描述

新创建的 asp.net mvc web api 项目后直接部署到 IIS 中,然后通过另外域名 Ajax 跨域名调用一个POST接口,并且请求头headers中增加 Content-Type:application/json,根据阮一峰的文章《跨域资源共享 CORS 详解》可知道这个非简单请求会先通过OPTIONS来验证服务器是否支持,问题就出来在这里,OPTIONS请求一直不成功,报405错误,经过不断尝试发现是 web api 建完项目后默认的Web.config里有这个一个配置:<remove name="OPTIONSVerbHandler" />,只要把这个配置去掉,OPTIONS就可以正常,然后继续后面的POST请求了。

我的问题是微软为什么会默认加上这个配置,有什么用,真是无比深的一个坑!
<remove name="OPTIONSVerbHandler" />

如图:
web.config默认配置

备注:

网上有人说将WebDAV模块和OPTIONSVerbHandler模块去掉,我试过根据不用去掉WebDAV,并且OPTIONSVerbHandler不能去掉,像上面的配置文件中将OPTIONSVerbHandler去掉反而OPTIONS不成功。

参考文章:

ASP.NET Web API 跨域访问(CORS)要注意的地方
跨域资源共享 CORS 详解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蘑菇王子 2022-09-12 03:52:19

remove后要add一个

<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="None" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文