浏览器检测到跨域请求时,新的浏览器都会做一个预检请求,以OPTIONS方式向API接口发起预检,这就会导致前后端分离部署的时候(跨域)需要解决预检问题,尽管在net core webapi中做了anyorgin anyheader anymethod但还是无法避过预检,微软的文档也是记载了这个问题,但是无奈文档阅读能力有限,着实没研究清楚,同时可以参考@张善友的这篇博文:https://www.cnblogs.com/shanyou/p/14327020.html上面说了如何解决跨域中预检的问题。
所以后续我的项目就改成了由webapi托管的blazor assembly模式,真残酷。
PS后续:
在一篇回答中看到了在http请求的时候设置
Http.DefaultRequestHeaders.Add("Accept", "application/json");
然后在谷歌中通过,火狐还是不通过,真的是坑爹。
目前微软的官方文档只看到3.1版本的案例,没有看到.net 5 的样例代码,遂暂停研究,研究这个导致工作划水半天,手动狗头。
PS第二天,莫名其妙除了火狐,别的浏览器都通过了,查阅火狐的报错,给出的提示是可能与跨域无关,是由浏览器插件导致的无法访问网站,做了http中间件拦截,并未检测到options预检请求发送,我心态崩了。