AJAX 不处理 302 重定向

2024-03-24

我在外部服务器上有一个数据库,我正在尝试查询该数据库。为此,我将在本地服务器 (Tomcat) 上创建一个 AJAX 调用(只是 XMLHttpRequest 对象 - 我没有使用任何 JavaScript 库)到附加了查询的页面。将完全相同的 URL 粘贴到 Firefox 中会导致它尝试下载 XML 文档。我的目标是使用 AJAX 来获取 XML 文档。

我遇到的问题是,当我使用 AJAX 进行调用时,Firebug 显示 GET 响应返回 302“暂时移动”,旁边有一个红色 X。 GET 响应的标头具有具有 OAuth 授权的位置参数,当我复制并粘贴位置参数时,它会将我带到正确的页面(告诉我下载 XML 对象)。

EDIT:我尝试使用 jQuery 的$.get("URL", function(data){alert(data)});同样的事情发生了 - 没有警报,但 Firebug 中出现红色 GET 请求和 302。

根据这些信息,我认为我调用的数据库首先尝试将我重定向到某个 OAuth 事物,然后该事物返回一个用于访问数据库的授权 URL。这就是我应该用来调用数据库、取回 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 状态是什么?为什么 Firebug 在控制台中的 302 旁边给了我一个 X,为什么没有重定向?
  • 我怎样才能解决这个问题?
  • 一旦我修复了它,我是否能够获取该 XML 文件,或者我还需要做其他事情吗?

编辑并更新:这是一个跨站点脚本问题。我在外部服务器上运行完全相同的脚本,并且能够检索和解析包含查询结果的 XML 文档。唯一的障碍是弄清楚如何从外部服务器执行此操作。我可以访问外部服务器的配置,并将研究如何操纵它以允许通过来自其他站点的数据库查询进行访问。


由于它是 ajax 请求,因此您无法从另一个域提取数据:http://en.wikipedia.org/wiki/Same_origin_policy http://en.wikipedia.org/wiki/Same_origin_policy

您在这里真正能做的就是从您自己的服务器(同一域)请求数据,并让它为您从外部数据库提取数据。

编辑:此响应已有 3 年多历史,现在使用现代浏览器(不是 IE https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX 不处理 302 重定向 的相关文章

随机推荐