欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET Web API决跨域问题

程序员文章站 2022-04-04 09:25:12
记录最近一次的项目开发中遇到的问题和解决方式。在给移动端开放数据接口的时候,移动端开放人员反映部署到测试环境的接口调用访问出现了问题,但是在单独进行访问是可以正常的。那么,问题就来了。 根据查询园子里大佬们的文章,了解到问题的根源。 问题的由来:该问题的出现是因为浏览器出于安全考虑,浏览器会限制脚本 ......

记录最近一次的项目开发中遇到的问题和解决方式。在给移动端开放数据接口的时候,移动端开放人员反映部署到测试环境的接口调用访问出现了问题,但是在单独进行访问是可以正常的。那么,问题就来了。

根据查询园子里大佬们的文章,了解到问题的根源。

问题的由来:该问题的出现是因为浏览器出于安全考虑,浏览器会限制脚本中发起跨域请求(有一个项目是使用的后台做的请求,类似微信接口调用的方式,未出现改问题),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的跨域解决方案,只是还没有去了解和使用过,这里就不进行记录了。