当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.net WebAPI跨域调用问题的解决方法

ASP.net WebAPI跨域调用问题的解决方法

2018年03月25日  | 移动技术网IT编程  | 我要评论

成人小,秦时明月之焚书坑儒什么时候出,唐山公交查询

发现问题

最近在做一个项目,前端是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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网