javascript - 同源政策

标签 javascript same-origin-policy

也许你们中的一些人可以帮助我更好地理解 javascript 同源策略。

同源策略定义如下(http://en.wikipedia.org/wiki/Same_origin_policy):

In computing, the same origin policy is an important security concept for a number of browser-side programming languages, such as JavaScript. The policy permits scripts running on pages originating from the same site to access each other's methods and properties with no specific restrictions, but prevents access to most methods and properties across pages on different sites.

我已经使用 url 将 GWT 应用程序部署到 Google App Engine

http://metalsandstocks.appspot.com

由于 GWT 将所有 java 编译成 javascript,这意味着我的应用程序部署为 javascript。由于这是一个 ajax 应用程序,我假设它需要遵守同源策略。该应用程序使用 ajax 调用不同的域 (http://finance.yahoo.com) 以获得实时股票报价以显示给用户。该应用程序按描述工作,但它的域与它调用更新的域不同。这个应用程序是否违反了同源政策?为什么或为什么不?

最佳答案

CORS(跨源资源共享)是允许跨域 AJAX 调用的标准方法。

这很简单。例如,如果将 HTTP header Access-Control-Allow-Origin: * 添加到页面(例如使用 PHP),那么来自任何域的 JavaScript 都可以使用 AJAX 读取该页面。如果不存在这样的 header ,则同源策略将阻止页面被来自不同域的 AJAX 调用读取。

使用 CORS,页面(例如公开特定数据或 API 的页面)的所有者可以公开该页面(并且仅该页面)供其他人从他们自己的域调用。原则是,如果页面的所有者明确表示“其他人可以访问我的东西”,那么 CORS 将允许它。否则,假定同站点策略。

参见:http://www.w3.org/TR/cors/

关于javascript - 同源政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863744/

相关文章:

javascript - 在 Node REPL 中,Promise 中的副作用在定义函数时运行,而不是在调用函数时运行

javascript - 为什么我的 JavaScript 代码会收到 "No ' Access-Control-Allow-Origin' header is present on the requested resource"错误,而 Postman 却没有?

javascript - 在 React 中使用带有 hooks 的基本状态

Javascript:这是什么数据类型?

javascript - 如何从名称值对字符串中获取值?

javascript - 判断当前环境和请求来源——需要定义变量

javascript - SOP(同源策略)的含义

javascript - 使用 jQuery 显示前一个 td 元素

javascript - Internet Explorer Javascript 跨域访问文档/禁用同源设置

JavaScript 同源策略 - 它如何应用于不同的子域?