使用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,所以这个请求将不起作用。
基本上我正在做请求到一个单一的网站.. gmail.com是一个例子..它仍然是不可能的? – fran 2012-01-10 17:34:54
是的,由于浏览器的同源策略,您不能使用标准XHR从一个域到另一个域发出请求。请注意,您还可以使用其他机制,例如JSON-P或CORS,但这些技术要求服务器以特定格式输出响应。 – monsur 2012-01-11 16:39:50