Https request with XMLHttpRequest

2019-04-09 06:49发布

问题:

Im able to do Http requests (POST/GET) with XMLHttpRequest.

I'm asking how to do requests with URLs like "https://www.gmail.com" I was trying something like this but the status code is 0

var http = new XMLHttpRequest();
    var url = "https://www.gmail.com";

    http.open("GET", url);
    http.onreadystatechange = function() {//Call a function when the state changes.
            if(http.readyState == 4 && http.status == 200) {
                    //alert(http.responseText);
                print("ok")
            }else{
                print("cannot connect")
                print("code:" + http.status)
                print(http.responseText)
            }
    }
    http.send(null);

I get always "cannot connect" "code" 0 and nothing as response

Any idea?

回答1:

This is going to fail for two reasons:

1) The url "https://www.gmail.com" actually tries to redirect you to "https://mail.google.com/mail/", which in turn will try to redirect you to a login page. This redirect is not being listed as an error

2) However more importantly, you cannot make XMLHttpRequests to a different domain, unless that domain supports CORS (http://www.html5rocks.com/en/tutorials/cors/). GMail does not support CORS, so this request will not work.