问题标签 [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 - 同源策略如何应用于 IP 地址
我在我们公司的 Intranet 上有一台运行 JBoss 的服务器。我想从我的机器(也在 Intranet 上)向该服务器发送 API 调用,并使用 JQuery 获取生成的 XML 响应。
我阅读了维基百科上的条目,但很困惑这如何适用于我的情况,因为我们的机器只有 IP 地址,没有域名。
我有
- 服务器网址:10.2.200.3:8001/serviceroot/service
- 客户端IP地址:10.2.201.217
我的问题是:
- 据我了解,这些是不同的领域,对吧?所以我必须使用代理向服务器发出 JQuery.ajax 调用
- 如果我想避免做(2),我可以在服务器上安装 Apache 并在那里用 JS 代码表单服务器页面吗?但随后 JS 将来自 10.2.200.3,服务器位于 10.2.200.3:8001。根据政策,这些不是被视为不同的域吗?
谢谢!
javascript - 用于全屏聚合来自多个 Web 服务的信息的简单应用程序
构建一个简单的“网络”应用程序的最简单方法是什么,它是一个页面,它只是刷新自身(使用 AJAX 或其他东西)以显示托管在互联网上各种不同服务器上的不断变化的数据?
我想与(例如)Twitter、Facebook、Skype、Google Calendar 以及任何数量的具有某种类型的 Web API 的其他服务进行交互。
应用程序不需要允许用户交互,只需使用访问这些服务所需的身份验证参数对其进行配置。
它应该能够在不显示 UI 元素的情况下全屏运行,只显示我正在显示的漂亮信息。
我开始使用 Jquery 编写 HTML 文件,但遇到了“同源策略”问题。有没有解决的办法?
我很想用 Html/Javascript 编写它并在 Google Chrome 中运行它,这可能吗?如果不托管我自己的 Web 服务器作为跨域的代理,我不知道如何绕过 SOP。
是否还有另一种仍然非常容易和简单的替代方案?我研究过使用 Windows Vista 边栏,但显然你不能拥有全屏小工具。
javascript - 如何使用应用程序和静态文件服务器解决 JavaScript 起源问题
在我正在构建的系统中,我想服务
- 静态文件(静态 HTML 页面和大量图像),以及
- 我的 servlet 生成的动态 XML。
动态 XML 是从我的数据库(通过 Hibernate)生成的,我使用 Restlets 来提供它以响应 API 调用。我想创建一个静态文件服务器(例如 Apache),这样就不会干扰动态服务器流量。目前两台服务器都需要在同一台机器上运行。
我以前从未做过这样的事情,这就是我被困的地方:
静态 HTML 页面包含对动态服务器进行 API 调用的 JavaScript。但是,由于两台服务器在不同的端口上运行,我遇到了相同的起源问题。如何解决?
作为奖励,如果您可以向我指出任何解释如何创建这样一个静态/动态内容服务系统的资源,我会很高兴。
谢谢!
javascript - Jquery - 拦截在 iframe 内点击的链接
我试图拦截点击页面的链接,包括 iframe 内的链接。这是我拥有的代码,但它不起作用。有什么想法我需要做什么吗?
Container 是 iframe 内的 div 的 id。
提前感谢您的任何建议
firefox - 用于跨站点脚本测试的浏览器(用于测试 Mozilla 附加组件)
我正在开发一个 Firefox 扩展,该扩展将涉及对域的 ajax 调用,这些调用通常会由于 Firefox(和大多数现代浏览器)设置的同源策略而失败。
我想知道是否有办法关闭同源限制(也许在 about:config 中),或者是否有开发人员为此转向的标准 lite 浏览器。
如果可能的话,我真的很想避免使用任何黑帽工具。不是因为我反对他们,我只是不想在这个过程中增加另一个学习曲线。
我可以在 PHP 中使用 curl 来确认请求是否有效,但我想开始编写插件将实际使用的 js,因此我需要一个可以执行 js 的客户端。
我也尝试过 spidermonkey,但由于我正在使用 jquery 进行 ajax,因此它适用于所有基于浏览器的默认变量。
所以,简短的版本:是否有一个可靠的浏览器/客户端用于跨站点脚本,主要不是黑客应用程序?或者我可以在 Firefox 中关闭同域策略吗?
svg - 在浏览器中嵌入标签时,带有外部图像的 SVG 不会加载它们
我做了以下观察:
如果我创建一个引用外部光栅图像的 svg 图像xlink:href
并尝试在浏览器中加载 svg,则外部图像仅在我使用<object>
标签时显示,但在使用<img>
标签时不显示。
使用标签进行渲染<object>
非常慢,而且不像使用 img 标签来处理图像那样干净,所以我想知道是否有办法让它通过<img>
标签工作。
起初我认为它不起作用,因为同源策略,但即使引用的图像在同一个目录中并且我只通过它的名称引用它,它也不会加载。
有任何想法吗?
jquery - 我可以在 SharePoint WebPart 中使用 jQuery ajax 而不必担心同源策略吗?
我当前的工作项目涉及开发一个将由我们的客户部署的 SharePoint 2007 WebPart。为了提供更好的用户体验,我通过将 an 的SRC
属性设置IFRAME
为 HTTP 处理程序的地址来“模拟”ajax。这些处理程序部署到 12 hive 中的 layouts 目录。
虽然这可行,但我更喜欢使用$get()
jQuery 的方法。这会在我的场景中可靠地工作,还是我仍然需要遵守相同的原产地政策?将 WebPart 部署到 SharePoint 场中的各个位置的情况如何?这种情况下使用会不会有问题$get()
?
同源策略会阻止我使用 调用 HTTP 处理程序$get
吗?
javascript - javascript确定远程域上的页面是否已更改
我正在尝试找到一种客户端方法来确定远程域上的页面是否已更改。
由于同源策略,我无法在 iframe 中加载页面并检查其内容。
所以我尝试使用.getResponseHeader("Content-Length")
,.getResponseHeader("Last-Modified")
但显然这些也受到 SOP 的限制,即使 FireBugContent-Length
在控制台中显示。
有没有办法做到这一点?我只需要一种方法来知道页面是否已更改。
谢谢
javascript - 我可以将显式 Javascript 方法授予不同主机的 iframe 吗?
我正在考虑一个系统,在该系统中,我允许用户创建支持 Javascript 的小部件,以供其他用户嵌入到他们在我网站上的仪表板中。我想相当严格地限制这些小部件,因此每个小部件都将作为 iframe 存在,并保存在自己唯一的主机名上:例如,ID #47 的小部件可以在 访问w47.widgets.example.com
。
对于授予权限的对话框等,允许小部件调用由父窗口显式授予的非常具体的方法会很有帮助,而无需授权 iframe 代表用户对父框架执行任何它喜欢的操作。
父文档是否可以明确允许对不同主机上的子文档的某些方法调用?
javascript - 规避同源政策的方法
同源政策
我想创建一个关于 HTML/JS同源策略的社区 wiki ,希望能帮助任何搜索这个主题的人。这是在 SO 上搜索最多的主题之一,并且没有统一的 wiki,所以我开始了 :)
同源策略防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性。该政策可以追溯到 Netscape Navigator 2.0。
您最喜欢的绕过同源策略的方式有哪些?
请保持示例的详细程度,最好还链接您的来源。