【问题标题】:Same-Origin Policy is only for XMLHttpRequest?同源策略仅适用于 XMLHttpRequest?
【发布时间】:2015-04-12 03:09:42
【问题描述】:

我猜同源策略不适用于 HttpRequest,因为在任何网页上,我都可以从其他域获取资源,如下所示:

 <img src="http://anotherDomain.com/pic.jpg">

那么,同源策略是否仅适用于 XMLHttpRequest? 而 XMLHttpRequest 只能通过浏览器运行的 Ajax 发送?

【问题讨论】:

  • 如果您喜欢其中一个答案,请考虑将其标记为已接受。谢谢。

标签: javascript ajax xmlhttprequest


【解决方案1】:

理解同源策略的重要原则是,

[它] 防止一个页面上的恶意脚本通过该页面的文档对象模型访问另一个网页上的敏感数据。

here 所述。换句话说,在浏览器端以任何形式执行的脚本(包括images loaded from foreign origin to be used in a canvas)都应遵守此政策,以防止损害客户端数据(例如cookie)机密性或完整性的可能性。

那么,同源策略是否仅适用于 XMLHttpRequest?

除了 XMLHttpRequest,它还适用于其他客户端 Web 技术,如 silverlight、flash、java applet、google gears 等,如 here 所述。

而 XMLHttpRequest 只能由浏览器运行的 Ajax 发送?

XMLHttpRequest 本质上是一个 javascript 对象。 So anything that can execute javascript 可用于发送 XMLHttpRequest。

【讨论】:

    【解决方案2】:

    同源政策适用于使来自其他来源的内容可用于 JavaScript 的所有内容。

    HTTP 请求的响应就是这样一个例子。获取用于画布的图像数据是另一回事。

    直接在页面中直接显示来自另一个来源的内容是可以的,因为页面中的脚本无法传递它。

    【讨论】:

    • 能否举个例子来说明一个违反同源策略的HTTP请求的响应?
    • 任何对 Ajax 的基本介绍都可以做到这一点。只需使用不同来源的 URL。
    • 我实际上是在要求一个不是 XMLHttpRequest 的示例,抱歉让您感到困惑。
    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 2010-12-22
    • 2013-07-20
    • 1970-01-01
    • 2018-02-18
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多