问题标签 [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.
security - 为什么新的 Facebook Javascript SDK 不违反“同源政策”?
新的 Facebook Javascript SDK 可以让任何网站以 Facebook 用户的身份登录并获取用户的数据...
所以它将是,www.example.com 包括来自 Facebook 的一些 Javascript,但我记得,该脚本被认为是 www.example.com 的来源,并且无法从 facebook.com 获取数据,因为它是违规的“同源政策”。这不正确吗?如果是这样,脚本如何获取数据?
php - 同源策略——JavaScript 调用 PHP
我知道这是一个热门话题,但我还没有找到一个完全全面的答案。
我正在尝试为我们的“客户”创建一种简单的方法,以便在他们的网站上放置谷歌地图,该地图会在地图上绘制我们客户(或其子集)的位置。客户位于 MySQL 数据库中,该数据库由 PHP 脚本动态转换为 XML(根据 Google 的示例)。这在我的网站上运行良好,但是当我在另一个网站上尝试它时,不允许 xmlHTTPRequest 查看 PHP,因为它在另一个域上。
我可以通过在另一个域上编写另一个 PHP 文件来规避这个问题,该文件只是读取原始域上的 PHP 文件。但并非我们所有的客户都会在他们的服务器上运行 PHP。有什么方法可以使用 JavaScript 从我们的数据库返回 XML 结果?
几点:
生成 xmlHTTPRequest 的 JavaScript 仍然位于我们的服务器上——我们的客户端从脚本标记链接到它。我认为这可能就足够了,但“起源”(无论如何,根据 Chrome)仍然被视为域#2
这很棒:如果我在 xmlHTTPRequest 中使用绝对引用(例如 request.open('GET', 'http://mydomain.com/api/foo.php', true)),那么它将在 IE 中失败,但是如果我使用相对引用('/api/foo.php'),它将起作用。
我对此知之甚少,但我可以使用 JSON 吗?我见过:'script src="http://..../someData.js?callback=some_func"' 但不知道怎么做,我会让 'someData.js' 看起来像 JSON?(我在功能方面思考得很多,这可能是不正确的?)。
我尝试添加: header("Access-Control-Allow-Origin: *"); 到输出 XML 的 PHP 的顶部,但我可以说它并没有做太多事情!
如果我确实在客户端服务器上使用 PHP 包装器,那么使用 cURL 请求而不是简单的 file_get_contents 或 fopen 有什么好处?
对不起,很多问题,但任何指导将不胜感激。
万分感谢,
垫
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 数据时出现问题。那么您能看看我的代码是否受到此政策的影响?虽然我怀疑它是否会受到该策略的影响,因为我了解到它会限制文件是否驻留在不同的域中,但这里两个文件彼此相邻。
代码:
javascript - jQuery 与浏览器的同源策略(使用 OData)
我正在构建一个 AJAX 应用程序来查询 OData 端点。我一直在对 Netflix OData 提要进行一些测试,发现了一些我没有得到的东西:
当我向 url(例如http://odata.netflix.com/v1/Catalog/Titles)发出 .ajax() 请求时,我收到错误消息:“Access-Control-Allow-Origin 不允许 Origin null” . 但是,当我将相同的 url 放入浏览器时,请求会通过并且我得到响应。
我没有得到的根本区别是什么?浏览器如何绕过同源策略?
javascript - 如何跟踪推文按钮的点击?
我想通过 Google Analytics 跟踪推文按钮点击,但推文按钮是一个 iframe,其中包含来自另一个域的内容。是否有一些技巧可以为推文按钮点击添加回调?
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 上托管以下代码。在这里尝试一下。
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 请求的步骤。
初始代码
javascript - JavaScript 同源策略对动态图像加载的影响
如果 JavaScript 具有相同的源策略,这是否意味着我不能从不同的域动态加载图像?
json - 没有 JSONP 的 getJSON 远程请求 - 服务器
我正在尝试从远程服务器调用 JSON 数据,但服务器不返回有效的 JSONP 格式数据,只返回有效的 JSON 数据。(与验证者确认)
如果我发出 getJSON 请求(使用 &callback=? ),我会返回有效的 JSON,但它不会触发回调函数,因为它不是有效的 JSONP。
有什么好的方法可以访问返回的 JSON 数据吗?
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 版本而不是完整版本而被禁用?
谢谢!