【发布时间】:2011-12-01 19:00:21
【问题描述】:
我在 Wikipedia 上阅读了同源政策的含义,但不明白它是如何工作的。我知道它会阻止例如我网站上的 javascript 与单独网站上的脚本进行交互,但这到底意味着什么?
【问题讨论】:
-
不发布答案,因为它只是指向MDN - Same Origin Policy for JavaScript的链接
标签: javascript same-origin-policy
我在 Wikipedia 上阅读了同源政策的含义,但不明白它是如何工作的。我知道它会阻止例如我网站上的 javascript 与单独网站上的脚本进行交互,但这到底意味着什么?
【问题讨论】:
标签: javascript same-origin-policy
这意味着如果你加载
并且您的浏览器会加载 javascript,然后该 javascript 无法访问不是来自该页面的 url。有很多细节,比如你无法访问
但是ajax请求可以访问
http://www.stackoverflow.com/something/something
浏览器本身不允许触发请求。
编辑——这可能是有用的:http://www.google.com/support/forum/p/Chrome/thread?tid=171316324d16747b&hl=en
【讨论】:
如果您的脚本 (JS) 尝试向站点执行一些 HTTP 请求,而不是通过 XMLHttpRequest 发起的请求,则请求将失败,返回状态代码将为 0 并且错误消息 - null。
这就是它最初的工作方式。
现在有一个跨域资源共享 (CORS) 规范,大多数现代浏览器或多或少都支持该规范。它允许执行此类请求,但有严格的限制。
【讨论】:
perform some HTTP request to the site other than the one it originated from via XMLHttpRequest 的声明感到困惑。 to the site than the one it originated from 是什么意思?你的意思是如果我加载一个网站,例如www.example.com 和 javascript 加载了该网页,并且它 (JS) 尝试发出 XMLHTTP 请求说 www.example1.com,它会失败。对吗?
http://localhost/examplescript.js 加载的,那么其中的 XMLHttpRequest 将能够访问 http://localhost/something 但将无法访问 http://www.localhost/something 或 http://localhost:8080/something