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

header - 如何添加 Access-Control-Allow-Origin 标头

我正在设计一个网站(例如 mywebsite.com),该网站从另一个网站(例如 anothersite.com)加载字体字体。我在 Firefox 中加载字体时遇到问题,我在此博客上阅读:

Firefox(从 v3.5 开始支持 @font-face)默认不允许跨域字体。这意味着必须从同一域(和子域)提供字体,除非您可以向字体添加“Access-Control-Allow-Origin”标头。

如何将 Access-Control-Allow-Origin 标头设置为字体?

0 投票
3 回答
38037 浏览

javascript - 捕获 XMLHttpRequest 跨域错误

有什么方法可以捕获Access-Control-Allow-Origin发出请求时引起的错误?我正在使用 jQuery,并且设置的处理程序.ajaxError()永远不会被调用,因为请求从来没有开始。

有什么解决方法吗?

0 投票
6 回答
85091 浏览

ajax - 错误:Access-Control-Allow-Headers 不允许 Content-Type

尝试发送 ajax 请求时,我在 Chrome 中收到此错误:

在 Firefox 中一切正常。

谁能帮我解决这个问题?

0 投票
4 回答
21915 浏览

javascript - 使用跨域资源共享的跨域 POST 查询没有返回数据

我正在通过 POST 请求跨域发送数据,但响应不起作用,特别是 jQuery 的成功处理程序永远不会被调用。

使用的东西:Django、Apache、jQuery。

因此,我设置了一个与此类似的请求:

如您所知,CORS允许我OPTIONS适当地回复查询,说“是的,您可以向我发送邮件”。我正在做的。Firebug 确认我得到了我的200状态码并且返回类型实际上是application/json. 但是,Firebug 也确认上面的成功处理程序没有被调用。

作为参考,我的回应OPTIONS是:

相反,如果我设置了一个complete: function()...处理程序,它就可以工作。

所以,问题是:发生了什么(或没有发生),为什么?我得到的数据很好,我只想能够返回响应。


更新这解决了我在某些浏览器上的问题,但由于我对此行为没有完整的明确解释,所以我将其保持打开状态

好的,所以我阅读了手册以及我对它的理解,所应用的算法大致是这样的:

  1. 用户代理可以实现预检调用。这是OPTIONS请求。这个想法是他们提出这个请求,这给他们一个关于所请求资源的答案,然后他们应该缓存这些资源。我没有传回 max-age字段,所以我怀疑在返回成功并且允许 X 请求时,用户代理的缓存中没有任何内容允许我这样做,所以默认规则(隔离请求) 被应用。
  2. 当您发出实际请求时,我相信用户代理应该检查飞行前缓存的权限。如果没有我的 max-age 字段,我相信它找不到这些权限。但是,使用相同的标题进行响应POST似乎允许 Firefox 和 Google Chrome 查看响应。歌剧不能。IE 目前还没有经过测试。

我目前不明白,并且从手册中(至少对我而言)不清楚 CORS 请求是否也应该在请求中使用这些标头以及OPTIONS. 我将试验Max-Age标题,看看允许或不允许什么。但是,我对这个问题仍然缺乏一定的权威理解,所以如果这里有人知道,我会全神贯注。

0 投票
2 回答
4963 浏览

ajax - 尝试获取 json 的访问控制允许来源错误

我正在尝试利用 Bing API 撤回拼写建议,但不断收到以下错误:

XMLHttpRequest 无法加载http://api.search.live.net/json.aspx?Appid=myIdWasHere&query=explotion&sources=spell。Access-Control-Allow-Origin 不允许来源http://myWebServerNameWasHere

我读了几篇看起来相似的帖子,然后是关于 CORS 的帖子,但我还是有点模糊。我在下面的代码中有什么问题?

0 投票
1 回答
2129 浏览

javascript - Does google-translate support CORS?

Is it possible to access google-translate (API v2) using

  • Javascript
  • POST
  • Cross-Origin Resource Sharing (CORS)

It is quite easy to do it with GET, but the URL is limited to 2k characters (more like 2072).

The string to be translated is encoded with encodeURIComponent. That means the actual length of the string is less than 360 characters (greek). It seems that I can go from 360 ch to 5.000 ch using POST that is quite an improvement.

I know that I can call my server and have it call google-translate but it seems to be overkill if a CORS solution is feasible.

0 投票
4 回答
4179 浏览

javascript - Opera 的跨域资源共享

有没有人找到关于跨域资源共享的 Opera 解决方法?

XmlHttpRequest我想从我放在 bar.com 上的脚本创建一个跨域到我的域 foo.com。

到目前为止,Opera 尚未实施该标准。

可以在此处找到有关如何在其他浏览器上执行此操作的示例和文档

据我测试,您可以在 Firefox、IE、Safari 和 Chrome 上执行此操作。但不是在 Opera 上。

0 投票
5 回答
237116 浏览

javascript - CORS POST 请求可以使用纯 JavaScript,但为什么不使用 jQuery?

我正在尝试提出一个跨域发布请求,我让它JavaScript像这样简单地工作:

但我想使用jQuery,但我无法让它工作。这就是我正在尝试的:

这会导致失败。如果有人知道为什么jQuery不起作用,请让我们都知道。谢谢。

(我使用的是jQuery1.5.1 和 Firefox 4.0,并且我的服务器正在响应正确的Access-Control-Allow-Origin标头)

0 投票
11 回答
796839 浏览

jquery - 如何使跨域资源共享 (CORS) 发布请求正常工作

我的本地局域网 (machineA) 上有一台机器,它有两个 Web 服务器。第一个是 XBMC 中的内置库(在端口 8080 上)并显示我们的库。第二个服务器是一个 CherryPy python 脚本(端口 8081),我用它来按需触发文件转换。文件转换由来自 XBMC 服务器提供的页面的 AJAX POST 请求触发。

  • 转到显示库的http://machineA:8080
  • 显示库
  • 用户单击发出以下命令的“转换”链接 -

jQuery Ajax 请求

  • 浏览器发出带有以下标头的 HTTP OPTIONS 请求;

请求标头 - 选项

  • 服务器响应以下内容;

响应标头 - 选项(状态 = 200 OK)

  • 谈话随即停止。理论上,浏览器应该发出 POST 请求,因为服务器使用正确的 (?) CORS 标头进行响应(Access-Control-Allow-Origin: *)

为了进行故障排除,我还从http://jquery.com发出了相同的 $.post 命令。这是我被难住的地方,来自 jquery.com,post 请求有效,OPTIONS 请求在 POST 之后发送。此交易的标题如下;

请求标头 - 选项

响应标头 - 选项(状态 = 200 OK)

请求标头 - POST

响应标头 - POST(状态 = 200 OK)

我无法弄清楚为什么相同的请求可以从一个站点工作,但不能从另一个站点工作。我希望有人能够指出我所缺少的。谢谢你的帮助!

0 投票
2 回答
50399 浏览

javascript - 跨域资源共享 GET:'拒绝从响应中获取不安全的标头“etag”'

没有自定义标头的简单 GET 请求。响应按预期返回。可以访问正文中的数据,但不能访问标题。

当我尝试访问“etag”标头时,浏览器会引发异常:

拒绝获取不安全的标头“etag”

Chrome、Safari 和 Firefox 的行为都相同。我没有在IE上测试它。

我在这里想念什么?