coolair
V2EX  ›  问与答

请教一个跨域的问题

  •  
  •   coolair · Apr 2, 2019 · 1179 views
    This topic created in 2602 days ago, the information mentioned may be changed or developed.
    <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 replies    2019-04-02 19:25:10 +08:00
    whoami9894
        1
    whoami9894  
       Apr 2, 2019 via Android
    服务器不是你的,所以前端没办法绕过 SOP。你前端提交图片 URL 到服务器,后端请求啊
    coolair
        2
    coolair  
    OP
       Apr 2, 2019 via Android
    @whoami9894 如果是自己的服务器,有办法吗?
    wxsm
        3
    wxsm  
       Apr 2, 2019
    有办法。

    1. 加反代
    2. 服务器响应头加 CORS
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   866 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:01 · PVG 06:01 · LAX 15:01 · JFK 18:01
    ♥ Do have faith in what you're doing.