AJAX不是处理302重定向(AJAX not handling 302 redirect)

2019-09-18 09:47发布

我有我想查询外部服务器上的数据库。 要做到这一点,我将我的本地服务器(Tomcat)的上创建一个AJAX调用(只是XMLHttpRequest对象 - 我没有使用任何JavaScript库)页面标有查询。 粘贴完全相同的网址到Firefox使其尝试下载一个XML文档。 我的目标是使用AJAX来获取XML文档。

我遇到的问题是,当我做与AJAX调用,萤火虫表明GET响应返回302“暂时移动”用一个红色的X旁边。 对于GET响应头与OAuth授权位置参数,当我复制并粘贴带我到正确的页面位置参数(告诉我下载的XML对象)。

编辑:我试图使用jQuery的它$.get("URL", function(data){alert(data)}); 同样的事情发生了 - 毫无戒备,但在Firebug红色GET请求和302。

基于这些信息,我认为我调用数据库第一次尝试我重定向到一些OAuth的东西,然后返回一个授权的网址来访问数据库。 这是我应该用什么来调用数据库,获取XML对象返回,然后做我的事。 AJAX似乎并不能够处理重定向,并且不是崩溃。

我不知道这是正确的,但是,因为我尝试使用下面的代码:

  else if (xmlhttp.readyState == 4 && xmlhttp.status == 302){
  alert("Hello 302!");
}
else {
  document.getElementById("test").innerHTML = "On state: " + xmlhttp.readyState + "<br />HTTP Status: " + xmlhttp.status;
}

它没有给我一个警告 - 相反,它表明,它是在状态4和状态0。我不明白为什么它会返回状态0。(编辑:固定在回答1和没有提到的错字改变)

所以我的问题是:

  • ,究竟是什么,是怎么回事?
  • 什么是0的状态,为什么萤火虫给我一个X旁边302控制台,为什么没有重定向?
  • 我怎样才能解决这个问题?
  • 一旦我解决它,我就能抓住该XML文件,或者是有别的东西,我需要做什么?

具有更新编辑:这是一个跨站点脚本问题。 我去外部服务器上跑完全相同的脚本,并能够检索和分析包含查询结果的XML文档。 唯一的障碍是搞清楚如何从外部服务器做到这一点。 我有机会到外部服务器的配置,将研究如何操纵它允许通过其他网站的数据库查询访问。

Answer 1:

:因为它是一个Ajax请求,你不能从另一个域提取数据http://en.wikipedia.org/wiki/Same_origin_policy

所有你能做的,只能在这里从你自己的服务器(同一个域)是请求数据,并把它从你的外部数据库中提取数据。

编辑:这反应是在3年内与现代浏览器(IE不<10),可以使用跨源资源共享老现在- https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS



Answer 2:

你有一个语法错误readystate需要是readyState 。 它是书面的方式,它永远不会是4。

建议另一块是只检查一个readyState 4个,并为这种说法的测试中status的302这样,你将能够解决它是否是导致您的问题302。



Answer 3:

尝试做在服务器端重定向

从萤火快照

在该快照Ajax请求发送给服务器侧(那里是重定向)



文章来源: AJAX not handling 302 redirect