问题标签 [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 投票
6 回答
8694 浏览

javascript - Firefox 跨域请求

我需要从在 firefox 中运行的脚本发出跨域请求(仅用于开发目的)。

这可以实现吗?也许修改about:config密钥?

谢谢!

0 投票
4 回答
9886 浏览

javascript - 禁用同源策略/在 WebKit WebViews 中创建跨域 XMLHttpRequests?

我想在我自己的嵌入式 WebViews 中禁用 XMLHttpRequests 的同源策略。我可以控制在 WebView 中加载的页面/正在执行的代码,所以我不关心执行相同的来源策略。我想提出跨域请求。

我已经尝试实现 WebPolicyDelegate 和 WebResourceLoadDelegate,但似乎没有为 XMLHttpRequests 调用它们。

0 投票
1 回答
217 浏览

jquery - 根据来自不同来源的请求加载外部样式表

jQuery 中是否有插件或功能可以动态加载来自不同来源的样式表,类似于 $.getJSON() 或 $.getScript()?我能够动态地集成来自同一来源的样式表,但我需要能够将来自不同来源的 jQuery UI 主题动态注入到页面中。我想我可以将 CSS 文件加载为 JSON 数据,然后使用 $().css(); 应用内容。但是,我一直在寻找更优雅的解决方案。

谢谢

0 投票
1 回答
7078 浏览

jquery - Jquery .load 同源策略

无论如何我可以欺骗 Jquery .load 同源策略吗?我最接近的是本教程

但这仅涉及 rss 提要。

0 投票
2 回答
7699 浏览

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

同源策略如何适用于以下两个域?

http://server1.MyDomain.com

http://server2.MyDomain.com

如果内容是从 server2 检索的,我可以在 server1 上托管的页面上运行 JS 吗?

根据下面丹尼尔的回答进行编辑<script>,我可以使用标签在不同子域之间包含脚本,但是异步请求呢?如果我从 server2 下载脚本到 server1 上托管的页面会怎样。我可以使用脚本与 server2 上的服务进行异步通信吗?

0 投票
2 回答
769 浏览

javascript - 使用 Javascript 进行跨域模板

我目前正在构建一个 Javascript 库,可用于根据媒体文件的 URL 轻松创建可嵌入媒体,然后使用 Javascript 方法和事件进行控制(想想像 Flash / Silverlight JW 播放器之类的东西)。

当然,我可以简单地从 Javascript 库中提取所有 html 标签并将其发送到浏览器:

但我认为这是一种非常丑陋的做法,它往往会创建难以管理的代码,当您在几周后查看它时无法阅读。

因此,模板解决方案似乎是要走的路。我一直在寻找EJS,因为它使用 AJAX 加载模板,因此您可以在单独的文件中管理模板,而不是直接在 HTML 页面上。

有一个“陷阱”:我的库需要完全跨域:库本身可以位于 foo.com,而服务站点可以位于 bar.com。因此,如果 bar.com 想要使用该库添加媒体播放器,则需要对位于 foo.com 上的模板进行 AJAX 调用,由于浏览器中的同源策略,这将不起作用。

AFAIK,没有库可以使用 JSONP 之类的东西来读写模板来解决这个问题。

谁能指出我解决这个问题的方法?

0 投票
3 回答
9226 浏览

javascript - JavaScript 检测父框架是否同源?

我正在寻找一种跨浏览器的方法来检测父框架是否与我的框架相同,最好不要在 JavaScript 错误控制台上打印警告。

以下似乎可行,但我想避免向控制台打印错误(至少 Safari 和 Chrome 在访问父框架上的 location.href 时会这样做。Firefox 抛出一个可以被捕获的异常):

0 投票
3 回答
8338 浏览

jquery - 任何具有“Access-Control-Allow-Origin: *”标头集的 jQuery 托管版本?

我最近一直在使用 jQuery,遇到了一个问题,我无法将它包含在用户脚本中,因为 XmlHttpRequest 使用相同的源策略。经过进一步测试,我发现大多数浏览器也支持 W3C 定义的跨域资源共享访问控制,作为同源策略问题的解决方法。我通过在包含Access-Control-Allow-Origin: *http 标头的本地 Web 服务器上托管 jQuery 脚本来测试这一点,它允许使用 XmlHttpRequest 下载脚本,以便它可以包含在我的用户脚本中。我想在发布脚本时使用托管版本的 jQuery,但到目前为止使用http://www.seoconsultants.com/tools/headers等工具进行测试我还没有找到任何允许跨域访问 jQuery 脚本的站点。这是我到目前为止测试过的列表:

是否有任何其他托管版本的 jQuery 允许跨源访问?我知道 jQuery 通常是通过脚本标签(有时是动态创建的脚本标签)加载的,但在这种特定情况下,我必须使用 XmlHttpRequest 和 Eval 来确保它被加载到正确的范围内。谷歌浏览器支持用户脚本但不支持@require,这意味着在谷歌浏览器的用户脚本中使用jquery的唯一方法是将它嵌入到.user.js文件中,或者通过XmlHttpRequest加载和评估它。嵌入不是最佳解决方案,虽然 Chrome 扩展允许您在扩展中包含 jQuery js 文件,但我更愿意坚持使用用户脚本,因为它们更简单并且可以在多个浏览器中运行。我已经提交了票Google Ajax APIjQuery团队允许跨域访问 CDN,但我的猜测是我现在只需要自己托管它。

0 投票
2 回答
2230 浏览

gwt - Google Web Toolkit 延迟绑定问题

大约 2 年前,我使用 GWT 开发了一个 Web 应用程序,从那时起,该应用程序不断发展。在当前状态下,它依赖于获取单个 XML 文件并从中解析信息。总的来说,这很好用。这个应用程序的一个要求是它需要能够从文件系统 (file:///..) 以及从网络服务器 ( http://.. )运行的传统模型运行

使用RequestBuilder对象从网络服务器获取此文件完全符合预期。从文件系统 Firefox、Opera、Safari 和 Chrome 运行应用程序时,它们的行为都符合预期。当使用 IE7 或 IE8 从文件系统运行应用程序时,RequestBuilder.send()调用失败,有关错误的信息表明由于违反同源策略而访问文件时出现问题。该应用程序在 IE6 中按预期工作,但在 IE7 或 IE8 中没有。

因此,我查看了RequestBuilder.java的源代码,发现实际请求是使用 XMLHttpRequest GWT 对象执行的。于是我查看了XMLHttpRequest.java的源代码,发现了一些信息。

这是代码(从 XMLHttpRequest.java 的第 83 行开始)

因此,基本上如果无法创建 XMLHttpRequest(例如在 IE6 中,因为它不可用),则使用 ActiveXObject 代替。

我阅读了更多关于 XMLHttpRequest 的 IE 实现的内容,看来它仅支持与网络服务器上的文件进行交互。

当我取消选中此框时,我在 IE8 中找到了一个设置(工具-> Internet 选项-> 高级-> 安全-> 启用本机 XMLHTTP 支持)。我认为这是因为我很少告诉 IE 不要使用他们的 XmlHttpRequest 实现,所以 GWT 只使用 ActiveXObject,因为它认为本机 XmlHttpRequest 不可用。

这解决了问题,但几乎不是一个长期的解决方案。

我目前可以捕获失败的发送请求并验证它是否正在尝试使用普通 GWT 从文件系统中获取 XML 文件。在这种情况下,我想做的是抓住 IE7 和 IE8 的情况,让它们使用 ActiveXObject 而不是本机 XmlHttpRequest 对象。

GWT google group 上有一个帖子,其中有一个解决此问题的假设解决方案(链接)。看着它,我可以看出它是为旧版本的 GWT 创建的。我正在使用最新版本,并认为这或多或少是我想做的(使用GWT 延迟绑定来检测特定的浏览器类型并运行我自己的 XMLHttpRequest.java 实现来代替内置的 GWT 实现)。

这是我尝试使用的代码

这是我添加到我的模块 xml 中的行

据我所知,这应该可以工作,但我的代码永远不会运行。

有谁知道我做错了什么?

我不应该通过延迟绑定来做到这一点,而在我捕获失败案例时只使用本机 javascript 吗?

有没有我没有提到的解决这个问题的不同方法?

欢迎所有回复。

0 投票
1 回答
300 浏览

javascript - 尽管有相同的来源政策,但 Flash/Javascript 上传

可以将文件上传到脚本所源自的域以外的域吗?

例如,假设您在 上托管文件www.example.com,并且您想将文件上传到uploads.example.com,以下脚本是否会违反同源策略(使用uploadify):

我还没有看到关于同一来源政策的明确参考,表明这是否会成为任何浏览器的问题。