问题标签 [same-origin-policy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1906 浏览

security - 为什么新的 Facebook Javascript SDK 不违反“同源政策”?

新的 Facebook Javascript SDK 可以让任何网站以 Facebook 用户的身份登录并获取用户的数据...

所以它将是,www.example.com 包括来自 Facebook 的一些 Javascript,但我记得,该脚本被认为是 www.example.com 的来源,并且无法从 facebook.com 获取数据,因为它是违规的“同源政策”。这不正确吗?如果是这样,脚本如何获取数据?

0 投票
3 回答
2274 浏览

php - 同源策略——JavaScript 调用 PHP

我知道这是一个热门话题,但我还没有找到一个完全全面的答案。

我正在尝试为我们的“客户”创建一种简单的方法,以便在他们的网站上放置谷歌地图,该地图会在地图上绘制我们客户(或其子集)的位置。客户位于 MySQL 数据库中,该数据库由 PHP 脚本动态转换为 XML(根据 Google 的示例)。这在我的网站上运行良好,但是当我在另一个网站上尝试它时,不允许 xmlHTTPRequest 查看 PHP,因为它在另一个域上。

我可以通过在另一个域上编写另一个 PHP 文件来规避这个问题,该文件只是读取原始域上的 PHP 文件。但并非我们所有的客户都会在他们的服务器上运行 PHP。有什么方法可以使用 JavaScript 从我们的数据库返回 XML 结果?

几点:

  1. 生成 xmlHTTPRequest 的 JavaScript 仍然位于我们的服务器上——我们的客户端从脚本标记链接到它。我认为这可能就足够了,但“起源”(无论如何,根据 Chrome)仍然被视为域#2

  2. 这很棒:如果我在 xmlHTTPRequest 中使用绝对引用(例如 request.open('GET', 'http://mydomain.com/api/foo.php', true)),那么它将在 IE 中失败,但是如果我使用相对引用('/api/foo.php'),它将起作用。

  3. 我对此知之甚少,但我可以使用 JSON 吗?我见过:'script src="http://..../someData.js?callback=some_func"' 但不知道怎么做,我会让 'someData.js' 看起来像 JSON?(我在功能方面思考得很多,这可能是不正确的?)。

  4. 我尝试添加: header("Access-Control-Allow-Origin: *"); 到输出 XML 的 PHP 的顶部,但我可以说它并没有做太多事情!

  5. 如果我确实在客户端服务器上使用 PHP 包装器,那么使用 cURL 请求而不是简单的 file_get_contents 或 fopen 有什么好处?

对不起,很多问题,但任何指导将不胜感激。

万分感谢,

0 投票
1 回答
420 浏览

php - 我的代码是同源政策的受害者吗?

这是我的代码。您必须仔细看看它是否受到这种形状的“同源政策”的影响。HTML 的域是 (http://127.0.0.1/jqload.html) & php 文件 (http://127.0.0.1/conn_sql.php)。这是 json 格式: [{"options":"smart_exp"},{"options":"user_int"},{"options":"blahblah"}] 我实际上想将我在 HTYML 中收到的 json 数据附加到用户输入&我为此受苦。如果我使用 eval 进行解析,则可以将其指向此处。但是,如果我使用 JSON.parse 进行解析,整个代码将停止工作并发出此错误消息“重要提示:在部署之前从 json2.js 中删除此行”。我将我的代码放在 stackoverflow 论坛上以解决其他问题,并被告知我的代码受到“同源政策”的影响 这会导致附加 JSON 数据时出现问题。那么您能看看我的代码是否受到此政策的影响?虽然我怀疑它是否会受到该策略的影响,因为我了解到它会限制文件是否驻留在不同的域中,但这里两个文件彼此相邻。

代码:

0 投票
2 回答
1070 浏览

javascript - jQuery 与浏览器的同源策略(使用 OData)

我正在构建一个 AJAX 应用程序来查询 OData 端点。我一直在对 Netflix OData 提要进行一些测试,发现了一些我没有得到的东西:

当我向 url(例如http://odata.netflix.com/v1/Catalog/Titles)发出 .ajax() 请求时,我收到错误消息:“Access-Control-Allow-Origin 不允许 Origin null” . 但是,当我将相同的 url 放入浏览器时,请求会通过并且我得到响应。

我没有得到的根本区别是什么?浏览器如何绕过同源策略?

0 投票
5 回答
7049 浏览

javascript - 如何跟踪推文按钮的点击?

我想通过 Google Analytics 跟踪推文按钮点击,但推文按钮是一个 iframe,其中包含来自另一个域的内容。是否有一些技巧可以为推文按钮点击添加回调?

0 投票
2 回答
1556 浏览

javascript - 为什么有些跨域 JSON 请求会失败,而有些则不会?

我在理解 JSON 的安全性方面有点困难,因为通常理论上不应该工作的事情,似乎可以。AFAIK,来自位于域 A 上的页面上的脚本的调用,不应该能够从域 B 接收数据。但是在下面的代码中,对一个外部域的调用失败,而另一个通过。两者都不是打包的 JSON 调用 (jsonp)。

为什么是这样?不应该禁止两者都通过浏览器安全检查吗?我在 Chrome 和 Firefox 中得到相同的结果。如果我在 dropbox.com 上托管以下 html 页面,Chrome 会给我以下错误消息:

XMLHttpRequest 无法加载 http://www.odinfond.no/rest/fund/calc/fundReturn?&id=300&oneTimeInvestment=100000&oneTimeInvestmentDate=2009-11-01&endDate=2010-11-01¤cy=NOK。Access-Control-Allow-Origin 不允许来源http://dl.dropbox.com 。

如果呼叫通过,我会得到 JSON 响应,可以通过单击此直接链接查看。对其他服务的调用成功返回。我在 Dropbox 上托管以下代码。在这里尝试一下。

0 投票
2 回答
275 浏览

ajax - Ajax、子域、200 响应和图像——好吗?

这是一个与AJAX、子域和 200 OK 响应(以及JavaScript 同源策略 - 它如何应用于不同的子域? )非常相似的问题,但有所不同。我有一种情况:

  • 一个域(www.example.com)
  • 子域中的页面 (sd.example.com/cat/id)
  • 需要向另一个子域 (cdn.example.com) 发出 ajax 样式请求

与上述问题相反,我要求的是图像。

  • GET 图像请求(使用 jQuery $.load())

这似乎工作得很好。因为它工作得很好,当有人指出它在 Firebug 中产生错误时,我并没有立即想到同源策略。

  • 图像正在本地加载( test.sd.example.com/cat/id的 apache VirtualHost url)

但是,由于我链接的那个问题,现在它已经浮现在脑海,我担心这在生产中不会可靠地工作。

  • 这会在生产环境中继续工作吗?它会跨浏览器可靠地工作吗?

答案:不——它只是看起来像在工作;不是真的

  • 如果没有,我该如何解决?(我不认为我可以 JSONP 图像......我可以吗?)

答:继续设置图像的源代码并等待显示,直到触发加载事件。

  • 如果是这样,我该如何停止 Firebug 错误?如果我能。(他们吓坏了开发人员。)

答:同上——去掉实际对图像文件进行 GET 请求的步骤。

初始代码

0 投票
2 回答
1976 浏览

javascript - JavaScript 同源策略对动态图像加载的影响

如果 JavaScript 具有相同的源策略,这是否意味着我不能从不同的域动态加载图像?

0 投票
3 回答
3395 浏览

json - 没有 JSONP 的 getJSON 远程请求 - 服务器

我正在尝试从远程服务器调用 JSON 数据,但服务器不返回有效的 JSONP 格式数据,只返回有效的 JSON 数据。(与验证者确认)

如果我发出 getJSON 请求(使用 &callback=? ),我会返回有效的 JSON,但它不会触发回调函数,因为它不是有效的 JSONP。

有什么好的方法可以访问返回的 JSON 数据吗?

0 投票
5 回答
91398 浏览

ajax - Google Chrome --allow-file-access-from-files 已禁用 Chrome Beta 8

我一直在使用 jQuery 和 Microsoft Seadragon 技术开发 AJAX 应用程序。
我需要访问 html5 画布函数 toDataURL。

对于谷歌浏览器,同源规则适用于该函数,这意味着本地运行的页面(file:///在 URL 中带有 )未能满足同源规则并引发异常。

使用 Chrome 7,使用--allow-file-access-from-files选项启动应用程序,允许canvas.toDataURL()从本地文件调用。

但是,使用相同选项 ( --allow-file-access-from-files) 启动 Chrome Beta 8 似乎不允许调用canvas.toDataURL()本地文件。

Chrome 是否放弃了该--allow-file-access-from-files选项,或者它只是因为它是 Beta 版本而不是完整版本而被禁用?

谢谢!