How do I send a cross-domain POST request via JavaScript?

后端 未结 17 2442
说谎
说谎 2020-11-21 05:06

How do I send a cross-domain POST request via JavaScript?

Notes - it shouldn\'t refresh the page, and I need to grab and parse the response afterwards.

17条回答
  •  一整个雨季
    2020-11-21 05:52

    There is one more way (using html5 feature). You can use proxy iframe hosted on that other domain, you send message using postMessage to that iframe, then that iframe can do POST request (on same domain) and postMessage back with reposnse to the parent window.

    parent on sender.com

    var win = $('iframe')[0].contentWindow
    
    function get(event) {
        if (event.origin === "http://reciver.com") {
            // event.data is response from POST
        }
    }
    
    if (window.addEventListener){
        addEventListener("message", get, false)
    } else {
        attachEvent("onmessage", get)
    }
    win.postMessage(JSON.stringify({url: "URL", data: {}}),"http://reciver.com");
    

    iframe on reciver.com

    function listener(event) {
        if (event.origin === "http://sender.com") {
            var data = JSON.parse(event.data);
            $.post(data.url, data.data, function(reponse) {
                window.parent.postMessage(reponse, "*");
            });
        }
    }
    // don't know if we can use jQuery here
    if (window.addEventListener){
        addEventListener("message", listener, false)
    } else {
        attachEvent("onmessage", listener)
    }
    

提交回复
热议问题