ASP.NET Web API决跨域问题
记录最近一次的项目开发中遇到的问题和解决方式。在给移动端开放数据接口的时候,移动端开放人员反映部署到测试环境的接口调用访问出现了问题,但是在单独进行访问是可以正常的。那么,问题就来了。
根据查询园子里大佬们的文章,了解到问题的根源。
问题的由来:该问题的出现是因为浏览器出于安全考虑,浏览器会限制脚本中发起跨域请求(有一个项目是使用的后台做的请求,类似微信接口调用的方式,未出现改问题),JavaScript或者Cookie只能访问同域下的资源-----所谓的“同源策略”,正是这个原因导致了移动端开发人员在H5页面上使用脚本异步访问接口被浏览器阻止了。
问题的解决方案:针对ASP.NET Web API 只需在web.config文件下添加相关的配置内容就可以解决了
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</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>
</system.webServer>
添加完配置后,基本上是可以解决跨域的问题了,当然还有CORS的跨域解决方案,只是还没有去了解和使用过,这里就不进行记录了。
推荐阅读
-
支持Ajax跨域访问ASP.NET Web Api 2(Cors)的示例教程
-
支持Ajax跨域访问ASP.NET Web Api 2(Cors)的示例教程
-
ASP.NET配合jQuery解决跨域调用的问题
-
ASP.NET配合jQuery解决跨域调用的问题
-
.net core web api 添加对session跨域实现
-
Web Api之Cors跨域(干货)---大家一定要看清我写的内容哦
-
nginx服务器通过配置来解决API的跨域问题
-
vue使用axios插件请求访问API遇到的跨域问题。
-
asp.net基于JWT的web api身份验证及跨域调用实践
-
用nginx解决:webstorm内置server调用本地api的跨域问题