最近又要写一个webapi,然后想到了跨域问题,想起上次做的时候研究了好久才成功,这次想起来还是记录一下,防止以后又花大量的时间去找方法。
关于跨域问题解决方法有以下几种:
1.JSONP 通过浏览器标签去请求WebApi;避开跨域问题。
2.通过后台模拟Http请求去请求WebApi
3.在服务器端允许跨域。
第一种方法我没试过,第二种方法通过后端语言发起请求自然是没有跨域问题的,但是不符合我项目要求,然后就是第三种方法了。使用cros使webapi项目支持不同域名的请求。以前用.net framework 的时候也研究过,照着https://www.cnblogs.com/landeanfen/p/5177176.html 这篇文章的方法运行成功了。
.net core也提供了相应的包Microsoft.AspNetCore.Cors。在安装完程序包后,我们在Startup.cs 中找到ConfigureServices方法,在其中注册cros。
然后在Configure方法中使用注册好的服务。
这样就可以解决跨域问题了,但是要注意的是,app.UseCors的位置,需要放在UseRouting()的后面,UseAuthorization()的前面,我第一次使用的时候就是UseCors放在了最前面导致怎么试都不成功,耗费了我不少时间,希望下次可以记住。