使用XMLHttpRequest的Https请求

问题描述:

能够使用XMLHttpRequest执行Http请求(POST/GET)。使用XMLHttpRequest的Https请求

我问怎么办请求使用URL,如“https://www.gmail.com” 我是想这样的事情,但状态代码为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); 

我总是得到“无法连接“”代码“0和没有作为回应

任何想法?

这是要失败的,原因有二:

1)的URL“https://www.gmail.com”实际上是尝试你“https://mail.google.com/mail重定向/“,这反过来会尝试将您重定向到登录页面。此重定向没有被列为错误

2)但更重要的是,除非该域支持CORS,否则不能将XMLHttpRequests创建到不同的域(http://www.html5rocks.com/en/tutorials/cors/ )。 GMail不支持CORS,所以这个请求将不起作用。

+0

基本上我正在做请求到一个单一的网站.. gmail.com是一个例子..它仍然是不可能的? – fran 2012-01-10 17:34:54

+2

是的,由于浏览器的同源策略,您不能使用标准XHR从一个域到另一个域发出请求。请注意,您还可以使用其他机制,例如JSON-P或CORS,但这些技术要求服务器以特定格式输出响应。 – monsur 2012-01-11 16:39:50