挡路跨域XHR或在始发/来源取回呼叫 [英] Block cross domain XHR or fetch call at origination/source
本文介绍了挡路跨域XHR或在始发/来源取回呼叫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让我们考虑以下场景:
- 用户在允许
CORS
的现代浏览器之一中加载https://foo.com/index.html
。 index.html
通过script
标记从https://bar.com/script.js
加载javascript。- 考虑这样一种假设情况:此
script.js
从未缓存,并且script.js
的内容已更改。 script.js
向https://baz.com
XHR
发出XHR
请求https://baz.com
已启用Access-Control-Allow-Credentials: *
,因此script.js
制作的XHR
通过。- 重要的用户信息现在可以传递给
https://baz.com
,这存在安全风险。
在CORS
之前,XHR
调用严格遵循同源策略,因此浏览器不允许从https://foo.com
调用https://baz.com
。
我想知道是否有办法让https://foo.com/index.html
指定XHR
允许的域名列表,这样上述情况就不可能发生。
非常感谢任何指针。
[更新]
I guess I have found the answer to my question.
感谢您的体贴,🙏
最佳!
推荐答案
我想我找到了问题的答案。
使用Content-Security-Policy
头https://foo.com/
的connect-src
指令可以将XHR
、fetch
调用与WebSocket
、EventSource
、<a> ping
一起限制到所需的域。
Content-Security-Policy: connect-src <source> <source>;
有关详细信息,请访问https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src
我一度想删除我的问题,但其他像我这样的人可以受益。
这篇关于挡路跨域XHR或在始发/来源取回呼叫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文