当我在浏览器的控制台创建XMLHttpRequest对象进行GET请求时,产生strict-origin-when-cross-origin,但这个和网上大多出现这个的情况不大一样,通过chrome的network可以看出连stateCode都没有,所以是不能直接在本地环境下进行网络访问吗🤔
那浏览器的为什么可以进行请求资源访问呢,node或者其他通过server运行起来的js也是没问题的
感觉这一块想不大通
愿有好心人指点一二不胜感激🙏
当我在浏览器的控制台创建XMLHttpRequest对象进行GET请求时,产生strict-origin-when-cross-origin,但这个和网上大多出现这个的情况不大一样,通过chrome的network可以看出连stateCode都没有,所以是不能直接在本地环境下进行网络访问吗🤔
那浏览器的为什么可以进行请求资源访问呢,node或者其他通过server运行起来的js也是没问题的
感觉这一块想不大通
愿有好心人指点一二不胜感激🙏
当时用 XMLHttpRequest 请求资源时,默认会使用同源策略,约束不同源之间的交行行为。strict-origin-when-cross-origin
是新版本 Chrome(>85) 中默认的同源策略。
打个比方,A(当前网页)需要去某个地方 C(服务器)拿个东西,但 A 没有亲自去拿,而是委托一个中间方 B(浏览器)去拿。这个 B 呢比较负责任,为了安全考虑,默认会检查 A 和 C 的关系。如果 A 是来自 C(比如 C 是 A 的家)的,那就会帮 A 去拿,而如果 A 想要 B 帮忙拿其他地方的东西(比如去隔壁小卖部拿冰棒),那他就不帮 A 拿。
这个策略下浏览器检查到不同源的请求时,都不用去访问服务器,直接就拒绝掉,所以连个 Status Code 都没有的。
如果想要绕过这个检查,一个简单的办法就是使用fetch(url,{mode:'no-cors'})
,这样就可以绕过检查,去请求跨域的资源了。
也有其他方案可以绕过这个检查,你可以查看 @robin 给出的链接,或者搜索跨域、CORS 等关键词,根据不同的场景选用合适的方案。
至于在 Node 中请求,就相当于是 A 亲自去拿,所以就不会有跨域的问题了。
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
这应该是跨域问题
具体如何解决跨域问题这篇文章说明的很详细 详情看这里