问题标签 [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.
javascript - Firefox 跨域请求
我需要从在 firefox 中运行的脚本发出跨域请求(仅用于开发目的)。
这可以实现吗?也许修改about:config
密钥?
谢谢!
javascript - 禁用同源策略/在 WebKit WebViews 中创建跨域 XMLHttpRequests?
我想在我自己的嵌入式 WebViews 中禁用 XMLHttpRequests 的同源策略。我可以控制在 WebView 中加载的页面/正在执行的代码,所以我不关心执行相同的来源策略。我想提出跨域请求。
我已经尝试实现 WebPolicyDelegate 和 WebResourceLoadDelegate,但似乎没有为 XMLHttpRequests 调用它们。
jquery - 根据来自不同来源的请求加载外部样式表
jQuery 中是否有插件或功能可以动态加载来自不同来源的样式表,类似于 $.getJSON() 或 $.getScript()?我能够动态地集成来自同一来源的样式表,但我需要能够将来自不同来源的 jQuery UI 主题动态注入到页面中。我想我可以将 CSS 文件加载为 JSON 数据,然后使用 $().css(); 应用内容。但是,我一直在寻找更优雅的解决方案。
谢谢
jquery - Jquery .load 同源策略
无论如何我可以欺骗 Jquery .load 同源策略吗?我最接近的是本教程。
但这仅涉及 rss 提要。
javascript - JavaScript 同源策略 - 它如何应用于不同的子域?
同源策略如何适用于以下两个域?
如果内容是从 server2 检索的,我可以在 server1 上托管的页面上运行 JS 吗?
根据下面丹尼尔的回答进行编辑<script>
,我可以使用标签在不同子域之间包含脚本,但是异步请求呢?如果我从 server2 下载脚本到 server1 上托管的页面会怎样。我可以使用脚本与 server2 上的服务进行异步通信吗?
javascript - 使用 Javascript 进行跨域模板
我目前正在构建一个 Javascript 库,可用于根据媒体文件的 URL 轻松创建可嵌入媒体,然后使用 Javascript 方法和事件进行控制(想想像 Flash / Silverlight JW 播放器之类的东西)。
当然,我可以简单地从 Javascript 库中提取所有 html 标签并将其发送到浏览器:
但我认为这是一种非常丑陋的做法,它往往会创建难以管理的代码,当您在几周后查看它时无法阅读。
因此,模板解决方案似乎是要走的路。我一直在寻找EJS,因为它使用 AJAX 加载模板,因此您可以在单独的文件中管理模板,而不是直接在 HTML 页面上。
有一个“陷阱”:我的库需要完全跨域:库本身可以位于 foo.com,而服务站点可以位于 bar.com。因此,如果 bar.com 想要使用该库添加媒体播放器,则需要对位于 foo.com 上的模板进行 AJAX 调用,由于浏览器中的同源策略,这将不起作用。
AFAIK,没有库可以使用 JSONP 之类的东西来读写模板来解决这个问题。
谁能指出我解决这个问题的方法?
javascript - JavaScript 检测父框架是否同源?
我正在寻找一种跨浏览器的方法来检测父框架是否与我的框架相同,最好不要在 JavaScript 错误控制台上打印警告。
以下似乎可行,但我想避免向控制台打印错误(至少 Safari 和 Chrome 在访问父框架上的 location.href 时会这样做。Firefox 抛出一个可以被捕获的异常):
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 脚本的站点。这是我到目前为止测试过的列表:
- http://www.asp.net/ajaxlibrary/CDN.ashx
- http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery
- http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery
是否有任何其他托管版本的 jQuery 允许跨源访问?我知道 jQuery 通常是通过脚本标签(有时是动态创建的脚本标签)加载的,但在这种特定情况下,我必须使用 XmlHttpRequest 和 Eval 来确保它被加载到正确的范围内。谷歌浏览器支持用户脚本但不支持@require,这意味着在谷歌浏览器的用户脚本中使用jquery的唯一方法是将它嵌入到.user.js文件中,或者通过XmlHttpRequest加载和评估它。嵌入不是最佳解决方案,虽然 Chrome 扩展允许您在扩展中包含 jQuery js 文件,但我更愿意坚持使用用户脚本,因为它们更简单并且可以在多个浏览器中运行。我已经提交了票Google Ajax API和jQuery团队允许跨域访问 CDN,但我的猜测是我现在只需要自己托管它。
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 吗?
有没有我没有提到的解决这个问题的不同方法?
欢迎所有回复。
javascript - 尽管有相同的来源政策,但 Flash/Javascript 上传
可以将文件上传到脚本所源自的域以外的域吗?
例如,假设您在 上托管文件www.example.com
,并且您想将文件上传到uploads.example.com
,以下脚本是否会违反同源策略(使用uploadify):
我还没有看到关于同一来源政策的明确参考,表明这是否会成为任何浏览器的问题。