我认为Same-Origin策略不适用于HttpRequest,因为在任何网页上,我都可以从其他域获取资源,如下所示:
<img src="http://anotherDomain.com/pic.jpg">
那么,Same-Origin Policy仅适用于XMLHttpRequest吗? 而XMLHttpRequest只能由从浏览器运行的Ajax发送?
答案 0 :(得分:1)
理解同源政策的重要原则是,
[it]防止一个页面上的恶意脚本通过该页面的文档对象模型访问另一个网页上的敏感数据。
如上所述here。换句话说,浏览器端的任何形式的脚本执行(包括images loaded from foreign origin to be used in a canvas)都应遵守此策略,以防止损害客户端数据(如cookie)的机密性或完整性。
那么,Same-Origin Policy仅适用于XMLHttpRequest吗?
除了XMLHttpRequest之外,它还适用于其他客户端Web技术,如silverlight,flash,java applet,google gear等,如here所述。
XMLHttpRequest只能由从浏览器运行的Ajax发送?
XMLHttpRequest本质上是一个javascript对象。 So anything that can execute javascript可用于发送XMLHttpRequest。
答案 1 :(得分:0)
同源策略适用于使来自其他来源的内容可用于JavaScript的所有内容。
HTTP请求的响应就是这样一个例子。获取用于画布的图像数据是另一种。
只需直接在页面中显示来自其他来源的内容即可,因为它无法通过页面中的脚本传递。