2012-01-10 60 views
3

能夠使用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和沒有作爲迴應

任何想法?

回答

5

這是要失敗的,原因有二:

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