ASP.net WebAPI跨域调用问题的解决方法
|
发现问题 最近在做一个项目,前端是VUE,后端是WebAPI,业务也就是一些实体的增删改查。在项目开始的时候我就预计到有跨域的问题,所以也找了一下资料,在Web.Config里面加上了配置信息: <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="*" /> <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE" /> </customHeaders> </httpProtocol> 这是网上找到的其中一种方法,也有自己写跨域的特征类,也可以引用微软库cors,网上能查到很多资料,这里就不一一展开了。 这样配置之后,我自己做Get测试,用JQ来调用也是ok的,我就以为跨域的设置已经做完了,然而天坑来了,Post操作调用不了,整天返回405错误,我就郁闷了,是怎么回事呢。 解决方法 上网查了一下跨域调用的原理,发现在跨域POST之前,是有一次OPTION方法调用,是用来确认是否运行跨域POST的握手确认过程。然后继续往下查,发现通过VS自建WebAPI工程默认有OPTION处理,默认是不允许跨域的。 所以我就在Web.Config里面把这几个代码注释掉了 <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> 最后跨域的POST请求通过了,用JQ和axios测试的。 也许,这个方法不是什么好方法,但确实解决我项目上的问题,所以记下来。如果有更好的方法还请各路高手指点 o(* ̄ ̄*)o 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 您可能感兴趣的文章:
(编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在ASP.NET中,获取基本UR1请求的最快方法是什么?
- asp.net-mvc – 为什么我的视图模型中的内部成员无法在视图
- asp.net-mvc-3 – MVC3视图继承不可能?
- asp.net-mvc – ASP.Net MVC中的自我AJAX更新部分视图/控制
- 实体框架 – WebApi OData:$filter’any’或’all’查询不
- asp.net-mvc – 使用html.actionlink将模型从视图传递到控制
- 来自ASP.NET MVC站点的“无效的JSON原语:alihack”错误
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“.html”
- asp.net – 在Web.config帮助中定义tagPrefixes
- ASP.NET和System.Diagnostics跟踪 – 我错过了什么,或者这是
- asp.net-mvc – 如何在ASP.NET MVC部分视图中使用
- 实体框架 – WebApi OData:$filter’any’或’a
- asp.net-mvc – ASP.NET MVC 3 Beta 1 Block访问
- LoginView中的ASP.NET LoginStatus不会触发Loggi
- asp.net-mvc – 在EditorFor for child对象中使用
- Asp.net配合easyui实现返回json数据实例
- asp.net – 我可以在超链接上显式指定NavigateUr
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验
- asp.net-core – 如何使用FluentValidation.AspN
- 是否可以使用ASP.NET ScriptManager来使用Window
