请教一个跨域的问题

2019-04-02 18:44:09 +08:00
 coolair
<div data-url="http://test.com/image/2019-04-02-17-29-11_DwWPYDNQczKRVwkb3FfJbP.jpeg"></div>

然后我想获取到这张图片用 form 的形式 ajax 提交给服务器:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://test.com/image/2019-04-02-17-29-11_DwWPYDNQczKRVwkb3FfJbP.jpeg', true);
xhr.responseType = 'blob';
xhr.onload = function (e) {
    if (this.status == 200) {
        var blob = this.response;
        // Ajax 提交这个 blob
    }
};
xhr.send();

但是在 Chrome 下提示:

Access to XMLHttpRequest at 'http://test.com/image/2019-04-02-17-29-11_DwWPYDNQczKRVwkb3FfJbP.jpeg' from origin 'http://a.lab.test:5000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

请问这个该如何解决? 谢谢。

809 次点击
所在节点    问与答
3 条回复
whoami9894
2019-04-02 18:50:19 +08:00
服务器不是你的,所以前端没办法绕过 SOP。你前端提交图片 URL 到服务器,后端请求啊
coolair
2019-04-02 19:20:53 +08:00
@whoami9894 如果是自己的服务器,有办法吗?
wxsm
2019-04-02 19:25:10 +08:00
有办法。

1. 加反代
2. 服务器响应头加 CORS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/551365

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX