问题标签 [cors]

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 回答
112899 浏览

jquery - 在 http 页面上使用 https 的 Ajax

我的网站使用 http 和 https 协议;它不影响内容。我的站点使用 jQuery ajax 调用,它也填充了页面上的某些区域。

现在,我想通过 https 进行所有 ajax 调用。(请不要问我为什么:))当我在使用 https 协议的页面上时,ajax 请求正在工作。当我在使用 http 协议的页面上时,我收到一个 javascript 错误:访问受限 URI 被拒绝

我知道这是一个跨域问题(实际上是一个跨协议问题),我知道我应该在 ajax 调用中使用与当前页面相同的协议。

不过,我希望所有 ajax 调用都是 https,并在通过 http 提供的页面上调用它们。是否有任何解决方法可以实现这一点(一些 json/代理解决方案?),还是根本不可能?

0 投票
32 回答
970483 浏览

.htaccess - Access-Control-Allow-Origin Multiple Origin Domains?

Is there a way to allow multiple cross-domains using the Access-Control-Allow-Origin header?

I'm aware of the *, but it is too open. I really want to allow just a couple domains.

As an example, something like this:

I have tried the above code but it does not seem to work in Firefox.

Is it possible to specify multiple domains or am I stuck with just one?

0 投票
6 回答
5859 浏览

javascript - 跨域资源共享 (CORS) - 我在这里遗漏了什么吗?

我正在阅读有关CORS的信息,我认为实现既简单又有效。

但是,除非我遗漏了什么,否则我认为规范中遗漏了很大一部分。据我了解,是外部站点根据请求的来源(并且可选地包括凭据)决定是否允许访问其资源。这可以。

但是,如果页面上的恶意代码想要将用户的敏感信息发布到外部站点怎么办?外部站点显然要对请求进行身份验证。因此,如果我没有遗漏什么,CORS 实际上使窃取敏感信息变得更容易。

我认为,如果原始站点也可以提供其页面允许访问的服务器的不可变列表,那将更有意义。

所以扩展的序列将是:

  1. 提供一个包含可接受 CORS 服务器列表的页面(abc.com、xyz.com 等)
  2. 页面想要向 abc.com 发出 XHR 请求 - 浏览器允许这样做,因为它在允许列表中,并且身份验证正常进行
  3. 页面想要向恶意网站发出 XHR 请求 - 请求在本地被拒绝(即被浏览器),因为服务器不在列表中。

我知道恶意代码仍然可以使用 JSONP 来完成其肮脏的工作,但我会认为 CORS 的完整实现将意味着脚本标签多站点漏洞的关闭。

我还查看了官方的 CORS 规范(http://www.w3.org/TR/cors),找不到任何关于这个问题的提及。

0 投票
7 回答
28761 浏览

ruby-on-rails - 如何在rails下的webrick中设置access-control-allow-origin?

我编写了一个小型 Rails 应用程序,通过 xmlhttprequests 将内容提供给另一个站点,该站点将从另一个域运行(不可能让它们在同一台服务器上运行)。我知道我需要在我的 rails 服务器上设置 access-control-allow-origin 以允许请求的网页访问此材料。

如何使用 Apache 执行此操作似乎有很好的文档记录,这可能是我在部署站点后将使用的服务器。虽然我正在开发,但我希望只使用 webrick,就像我习惯使用 rails 一样。有没有办法配置 webrick 以在 rails 中提供适当的 http 标头?

0 投票
2 回答
7297 浏览

xmlhttprequest - 为什么 CORS 似乎不适用于 POST?

Mozilla自己的规范说简单GET或者POST应该是原生的CORS,没有预检,但到目前为止,POST我所做的每一次尝试都导致了一个OPTIONS标题。当我将其更改POST为获取代码时,立即发送正确的GET请求,因此跨站点部分工作正常。

这是我在 Firefox 中所做的精简示例:

这是我已经在 chrome 和 IE 中工作的内容:

0 投票
1 回答
20973 浏览

javascript - 访问控制请求标头:-x-requested-with

我正在为我的用户构建一个小部件并试图让它工作,但是我一直遇到这个标题的 X-Domain 问题。httpfox 给了我 - NS_ERROR_DOM_BAD_URI - 在进一步调查中我发现它

我不确定为什么它没有加载,但我基本上调用了一个脚本,然后我试图抓取一些 html 来加载它,但它被上面的标题阻止了。

我怎样才能绕过这个问题?

0 投票
3 回答
5205 浏览

ruby-on-rails - Rails、REST 架构和 HTML 5:带有飞行前请求的跨域请求

在致力于使我们的网站对 HTML 5 友好的项目时,我们渴望接受跨域请求的新方法(不再通过隐藏的 iframe 发布!!!)。使用访问控制规范,我们开始设置一些测试来验证各种浏览器的行为。

当前的 Rails RESTful 架构依赖于四个 HTTP 动词:GET、POST、PUT、DELETE。然而,在访问控制规范中,它规定非简单方法(PUT、DELETE)需要使用 HTTP 动词 OPTIONS 的飞行前请求。此外,在测试过程中,我们发现 Firefox 3.5.8 也存在飞行前 POST 请求。

我的问题是这个。有人知道 Rails 框架的任何项目致力于解决这个问题吗?如果没有,关于支持 OPTIONS 方法的最佳策略的任何意见,因为它必须支持所有 POST、PUT、DELETE 方法的路由?

0 投票
8 回答
104823 浏览

javascript - CORS 无法在 Chrome 上运行

我已经在服务器(使用 CrossOriginFilter 的 Jetty)上设置了跨域资源共享,它在 IE8 和 Firefox 上完美运行。在 Chrome 上,它只是......没有。

调用错误函数,并带有有用的消息“错误”。它似乎正在发出请求,但没有您期望的任何标头。如果 URL 来自同一来源,则可以正常工作。

0 投票
4 回答
4036 浏览

javascript - 请在 401 时帮助测试 Firefox jQuery ajax 中的 CORS 问题

这让我发疯。

jQuery 1.4.2,Windows XP sp3

这是我的测试。

加载火狐3.5+

http://plungjan.name/test/testcors.html

作品

将文件保存到硬盘并从那里运行

在我的办公室里,外部工作,内部不工作

有趣的是,我不能同时跑两个。

背景:我对使用CORS的内部 Web 服务执行GET操作。请不要发布任何关于 FF 自 v3.5 以来不处理跨域请求的答案,详见此处此处

它在 IE8 和 FF3.6.6 中从一台服务器到另一台服务器,现在几乎从文件系统 (file:///) 到服务。 只有来自文件系统并且只有当 FF 3.6.6 需要协商(用户已经登录、授权并发送凭据!)时,我才不会在协商后获取数据。jQuery xhr 返回状态 0 并且没有数据/响应文本或任何在我看来,jQuery 做出反应并从 401 中保存 xhr,而不是稍后从 200 OK

以下是我在提醒 XHR 对象时在通信结束时得到的结果:

如果我调用同一台服务器但不需要凭据,则跨域返回数据就好了

于是通讯如下:

回报是

然后FF发送

并获得我需要的文件,但无法在 FF 中获取:

从服务器发送的数据不在XHR对象中

这是我的代码

0 投票
4 回答
13573 浏览

javascript - 使用 PrototypeJS 进行跨域资源共享

我在使用跨域资源共享和原型时遇到了一些问题。我有一个对外部资源的简单发布请求,对于一个简单的发布请求,必须满足一些规则:

Content-Type 必须在 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 中,简单请求不会使用 http 请求设置自定义标头,并且服务器必须设置 Access- Control-Allow-Origin 标头正确。

使用 vanilla JavaScript XMLHttpRequest 一切正常,但使用 PrototypeJS 它将无法正常工作,因为它接缝 Prototype 设置了一些自定义标头,我不知道如何防止它。

我通过以下方式在原型中尝试过:

知道如何让 Prototype 发送这样一个简单的 CORS 请求吗?


我有一个由普通JavaScript XMLHttpRequest创建的标头转储:

以及由Prototype Request创建的标头:

原型使用完全不同的标头集......这导致控制台中出现以下错误:

XMLHttpRequest 无法加载 foreign-host.com/bthesis/returnJSON.php。Access-Control-Allow-Headers 不允许请求标头字段 X-Prototype-Version。拒绝获取不安全的标头“X-JSON”

奇怪的是,Webserver 在这两种情况下都返回了请求的资源(我在 chrome 的开发者控制台的“资源”视图中看到它)但它接缝原型无法以某种方式访问​​它