V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

请教一个跨域的问题

  •  
  •   coolair · 2019-04-02 18:44:09 +08:00 · 811 次点击
    这是一个创建于 2054 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <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.
    

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

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

    1. 加反代
    2. 服务器响应头加 CORS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:34 · PVG 22:34 · LAX 06:34 · JFK 09:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.