javascript-CORS请求在Safari中不起作用

我正在提出CORS xhr请求。 这在chrome中工作正常,但是当我在野生动物园中运行时,出现“无法加载---- Access-control-allow-origin不允许的访问”。 代码完全相同,我已经在服务器上设置了CORS。 以下是我的代码。(具有访问控制,但是如果没有accessToken,您可以自由尝试)

var water;

var req = new XMLHttpRequest;

req.overrideMimeType("application/json");

req.open('GET', 'https://storage.googleapis.com/fflog/135172watersupplies_json', true);

req.setRequestHeader('Authorization', 'Bearer ' + accessToken);

origThis = this;

var target = this;

req.onload = function() {

water = req;

req.send(null);

查看请求标头后,我看到首先发出了OPTIONS请求,这是不允许的请求。 原始标头未包含在Safari的响应中,但位于chrome中。 是什么原因造成的。 任何帮助将不胜感激。

更新:我已经在Windows的Safari浏览器中进行了尝试,并且可以正常运行,所以我不确定这里发生了什么。 我使用的Mac是远程访问(Macincloud.com),但我认为这与它无关。

10个解决方案

45 votes

对Amazon S3中的文件发出XHR请求时遇到了相同的错误。 在Safari 7上失败了。 我知道您没有使用Amazon S3,但我想我会发布以防此解决方案对其他人有所帮助。

问题是Safari 7将Access-Control-Request-Headers标头设置为“原始的x请求的”,但是我的AWS CORS配置仅允许“ x请求的”:

*

GET

3000

Authorization

x-requested-with

我添加了“ origin”作为允许的标题,并且一切正常。

origin

注意:*的AllowedOrigin仅用于开发目的。 有关更多信息,请参见下面的@andes评论。

Seth answered 2020-02-21T15:59:34Z

8 votes

我只是有一个类似的问题,CORS错误。 它可以在Firefox和Chrome中运行,但不能在Safari 10中运行。

原来,我们需要在JSON URL上加上斜杠。

William Macdonald answered 2020-02-21T15:59:58Z

1 votes

就我而言,这是Accept-Langauge标头的问题。 我在Access-Control-Allow-Headers中添加了Accept-Language,此问题已解决。

deen answered 2020-02-21T16:00:18Z

0 votes

对于CORS请求,您应该使用起源fflog.storage.googleapis.com。如果您使用常见的overrideMimeType起源,则任何站点都可以访问您的存储桶。

有尝试尝试删除overrideMimeType吗? 如果设置了mime类型,它将正确返回。

我也对Safari POST请求有问题,但还没有答案。 GET确定。

Kyaw Tun answered 2020-02-21T16:00:48Z

0 votes

尝试删除替代mime类型。

var

jsonhandler=function(){var req=JSON.parse(this.response);console.log(req)},

req=new XMLHttpRequest;

req.open('GET','https://storage.googleapis.com/fflog/135172watersupplies_json');

req.setRequestHeader('Authorization','Bearer '+accessToken);

req.οnlοad=jsonhandler;

req.send();

cocco answered 2020-02-21T16:01:07Z

0 votes

当我查询您的URL时,我将获得以下访问控制标头:

Access-Control-Allow-Origin: *

Access-Control-Expose-Headers: Authorization, Cache-Control, Content-Length, Date, Expires, Server, Transfer-Encoding, x-goog-meta-foo1

我怀疑这与您的Access-Control标头有关-是您遗漏了某些内容,还是过于具体。

鉴于您实际上正在发送自定义标头,因此您可能需要尝试:

Access-Control-Allow-Headers: *

您还会看到遗漏Access-Control-Expose-Headers是否有所作为。

除此之外,查看实际的请求/响应标头实际上也将有所帮助。

Luke answered 2020-02-21T16:01:46Z

0 votes

当我尝试

curl -v -X OPTIONS \

-H 'Origin: fflog.storage.googleapis.com' \

-H 'Access-Control-Request-Method: GET' \

https://storage.googleapis.com/fflog/135172watersupplies_json

除了其他标题,我得到了:

Access-Control-Allow-Origin: *

当我在Mac OS 10.8.3上针对Safari 6.0.4的Access-Control-Allow-Origin执行AJAX请求时,出现403错误,但它们全部执行。

因此,我只能猜测您正在尝试发送带通配符Access-Control-Allow-Origin的凭据请求。

Old Pro answered 2020-02-21T16:02:19Z

0 votes

感谢所有答复,我终于自己得到了。 我在responseHeaders中添加了“ Origin”,现在可以正常工作了。

Patrick answered 2020-02-21T16:02:39Z

0 votes

至于Amazon S3,它仅在我添加了更多允许的标头Content-Type和Range后才能在Safari中使用。 其中之一完成了工作。

*

GET

POST

3000

Authorization

Origin

X-Requested-With

Content-Type

Range

Edhowler answered 2020-02-21T16:02:59Z

0 votes

我在CORS在Chrome中工作时遇到了同样的问题,但是在Safari中抛出了原点错误。 原来这是一个Kerberos授权问题。 当我直接在Safari中加载XHR URL时,系统会提示我输入凭据。 输入它们后,我返回了原始站点,Safari不再出现CORS错误。

Seth Moore answered 2020-02-21T16:03:20Z

php ci cors,javascript-CORS请求在Safari中不起作用相关推荐

  1. Spring Boot Web应用开发 CORS 跨域请求支持

    一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等 CORS与JSONP相比 1. JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求. 2. 使用C ...

  2. java重定向跨域问题_重定向 CORS 跨域请求

    TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...

  3. corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求

    vue项目CORS跨域请求500,post请求变options请求,到底是什么情况. 提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确. 一.先介绍为什么明明发送的是Post请求,为什么 ...

  4. CORS预检请求详谈

    引言 最近在项目中因前后端部署不同地方,前端在请求后端api时发生了跨域请求,我们采用CORS(跨域资源共享)来解决跨域请求,这需要前后端的配合来完成.在这一过程中,后端支持了CORS跨域请求后,前端 ...

  5. HTTP中CORS跨域请求的实现(C++|Qt框架实现)

    目录 背景 关键 演示及源码 背景 HTTP中CORS跨域请求,可以获取其他服务器的数据: 这里用Qt框架实现! 逻辑如下: 浏览器访问127.0.0.1:80端口!80端口请求了127.0.0.1: ...

  6. Node.js设置CORS跨域请求中多域名白名单的方法

    允许跨域请求,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名. 最常见的设置是: res.header('Access-C ...

  7. 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法

    记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 参考文章: (1)记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 (2)https://www.cnblog ...

  8. javascript无限请求_JAVASCRIPT事件循环

    事件循环是用来理解JavaScript的最重要的方面之一.这篇文章旨在解释JavaScript如何与单个线程一起工作的细节,以及它如何处理异步函数. JavaScript代码运行是单线程.一次只执行一 ...

  9. JavaScript HTTP请求

    JavaScript HTTP请求 POST方式 POST方式 var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象 httpRequest.ope ...

最新文章

  1. Linux下MySQL登录报错1045,linux下 root 登录 MySQL 报错的问题
  2. java doc 文档,注解详解
  3. VTK:Utilities之Timer
  4. 2019第十届蓝桥杯C/C++ B组省赛 —— 第四题:数的分解
  5. scrapy分布式爬虫爬取淘车网
  6. mysql表类型_MySQL表类型的选择
  7. mybatis mysql 模糊查询_MyBatis Oracle、MySQL、DB2、SQLServer的like模糊查询
  8. Cartographer+LOAM+ LIO-SAM核心算法与源码剖析(室内+室外)
  9. 优点 spark_分布式计算引擎之星——Spark
  10. c_数据结构_队的实现
  11. apollo简易高精度地图制作
  12. Matplotlib画热力图---heatmap(逐行注释)
  13. 虚拟机安装苹果系统的教程
  14. NGFW中数据包转发流程
  15. H264---码率控制---CBR、VBR、ABR、CVBR四种编码方式
  16. (AAAI-2019)STA:用于大规模基于视频的行人重识别的时空注意力
  17. 你不得不知道的HashMap面试连环炮
  18. lol手游服务器维护到什么时候,lol10.1版本维护到几点 lol维护公告最新2020
  19. 如何选择一台高性能计算机,【小白必看】如何选购电脑?
  20. 苹果疯了,现在又开始坑支付宝!

热门文章

  1. pn532检测不到nfc设备_华为、小米又增回NFC功能,苹果却一直无NFC功能,NFC能否成为关键?...
  2. 为 什 么 说 Synchronized 是 非 公 平 锁
  3. 安装java环境----血泪版
  4. php语句执行顺序,sql语句执行顺序是什么
  5. 小程序地图,回到当前所在位置
  6. 计算机专业的你,毕业后可以从事什么职业?前景如何?
  7. 【SAP】ABAP开发——ALV展示后字段的下划线连接
  8. 怎么简述计算机网络的含义,事业单位的计算机网络信息管理及实践意义论述
  9. HTML5七夕情人节表白网页制作【3D雪花展开相册】HTML+CSS+JavaScript 程序员表白网页 简单的3D相册制作
  10. Windows 7使用宝典安装技巧篇之——如何在Win7桌面上显示“我的电脑”