这是一个我认为我理解的概念,但最近发现我错了。我查看了互联网上的所有内容,并找到大量小细节和代码片段的示例,但我仍然缺乏对它的阻止以及为什么阻止它以及为什么阻止它的理解。所以这更多的是要求高层次的解释而不是问题。交叉来源xhr和同源政策
不管怎么说,这里就是我想我了解:
比方说,我有域A.com和域B.com。每个人都拥有自己的IP地址的apache服务器。 我从域A.com加载一个HTML文件到浏览器中。浏览器执行POST XMLHttpRequest到B.com/doStuff.php,由于设置了相同的域策略而失败。
所以: 谁是同域名政策是相关的?我认为答案是B.com/doStuff.php ...对不对?因此,当A发送请求时,B检查请求标头的来源,并说“哎呀,不同的域,不会听你的”。或者A发送请求,B响应指定“same-domain-policy”的头部,然后浏览器检查该请求,因为指定了same-domain-policy,并且A请求头部的域不匹配来自B的请求BROWSER拒绝发送xhr?
如果是这样的话,似乎不允许跨原点请求的一点是,因为“我不想比我之外的任何人访问我的API”。这就是全部?因为你不想用某种认证来解决这个问题吗?难道有人只是构造一个假源头的HTTP请求(简单地说谎)?
或者这是否应该保护用户?如果是这样的话,如何防止他们调用你的API来保护任何人?
我很困惑...
不会抢夺使用URL,例如停止机器,卷曲,它只是试图阻止基于浏览器的抓取。要阻止非js威胁,您必须进行身份验证。关键是一个网站的内容不能通过未经签名的JS重新嵌入,而不需要你明确地允许它。 – dandavis
@dandavis不是那么容易回避吗?只需要你的服务器获得它的javascript请求(例如curl),然后将它传递回javascript ...有什么意义? – Phildo
重点是控制和问责:服务器/ php代码注册到信用卡,普通旧网页不是。在你的例子中,执行curl的服务器可以很容易地识别和阻止,但是如果流量来自广告注入的javascript,请求可能来自任何地方... – dandavis