2

我正在尝试获取页面的内容,但该页面使用 https 进行保护。我尝试将 XMLHttpRequest 与 http 站点一起使用并成功,但此页面确实返回了您必须登录的页面的重定向。

以下是我尝试使用的代码:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
if (xhr.readyState==4 && xhr.status==200) {
document.getElementById("container").innerHTML = xhr.responseXML.body.innerHTML;
    };
};
xhr.open('POST', 'https://eu.battle.net/wow/en/vault/character/auction/alliance/', true);
xhr.withCredentials = true;

xhr.send();
document.getElementById("container").innerHTML = "loaded";

我尝试设置请求标头,包括 cookie 和身份验证,并将方法更改为 GET 和 POST,但没有区别。

任何人都可以就这个请求给我一个提示吗?

PS如果这根本不可能,有没有办法使用不同的方法成功?

4

1 回答 1

2

您不能跨域发出 AJAX 请求,除非它返回 Access-Control-Allow-Origin 标头。出于众所周知的安全原因,从脚本内发起的跨站点 HTTP 请求受到众所周知的限制。例如,使用 XMLHttpRequest 对象发出的 HTTP 请求受同源策略的约束。特别是,这意味着使用 XMLHttpRequest 的 Web 应用程序只能向加载它的域发出 HTTP 请求,而不能向其他域发出 HTTP 请求。

更多信息:https ://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

您可以使用 PHP 代理绕过此问题: http ://blog.edwards-research.com/2012/10/cross-domain-ajax-a-simple-workaround/

于 2013-09-09T15:01:31.923 回答