CORS 在 MS Edge 中被阻止,但适用于所有其他浏览器

时间:2021-05-14 07:37:31

标签: cors

设置:

  • 网站正在尝试从 S3 下载文件(可以是具有正确配置 CORS 策略的任何服务器)
  • 尝试使用 FileSaver.js 下载文件:download("https://s3url.com/path/you/do/not/need/to/no.jpeg")
  • 在幕后 FileSaver.js 正在这样做:
var xhr = new XMLHttpRequest()
xhr.open('GET', url)
  • Chrome 和 FF 运行良好。
  • S3 CORS 政策是完全开放的
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

问题

仅在 MS Edge* 中,使用 FileSaver.js,任何在 S3 中保存资源的尝试都会失败并显示 blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

  • Edge 版本 90.0.818.56(官方版本)

1 个答案:

答案 0 :(得分:0)

我终于找到了一个可能的“原因”和解决方法。

解决方法是使用 beta Edge release

我认为请求被阻止是因为在 Edge 中运行 XMLHttpRequest 时缺少 Origin 请求标头。

我希望其他人能找到这个并停止转动他们的轮子!如果您在面向客户端的应用程序中执行此操作,这并不是很有帮助。

更多详细信息可能来自此处:参考:https://docs.microsoft.com/en-us/answers/questions/314369/xmlhttprequest-getting-blocked-by-cors-policy-in-e.html?childToView=318134#comment-318134

我还打开了 an Issue with FileSaver.js 以防万一您以与我相同的方式到达这里并希望 FileSaver 工作。