javascript – AJAX没有处理302重定向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – AJAX没有处理302重定向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1943字,纯文字阅读大概需要3分钟。
内容图文
![javascript – AJAX没有处理302重定向](/upload/InfoBanner/zyjiaocheng/792/293b6a427e94447198101802fc2452d4.jpg)
我在外部服务器上有一个数据库,我试图查询.为此,我将在我的本地服务器(Tomcat)上创建一个AJAX调用(只是XMLHttpRequest对象 – 我没有使用任何JavaScript库)到附加查询的页面.将完全相同的URL粘贴到Firefox中会导致它尝试下载XML文档.我的目标是使用AJAX来获取该XML文档.
我遇到的问题是,当我用AJAX进行调用时,Firebug显示GET响应返回302“暂时移动”,旁边有一个红色的X. GET响应的标头有一个带有OAuth授权的Location参数,当我复制并粘贴location参数时,它会将我带到正确的页面(告诉我下载XML对象).
编辑:我尝试使用jQuery的$.get(“URL”,函数(数据){alert(data)});同样的事情发生了 – 没有警报,但是一个红色的GET请求和一个Firebug中的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在控制台中给我一个X旁边的X,为什么没有重定向?
>我该如何解决这个问题?
>一旦我修复它,我是否能够获取该XML文件,或者还有其他我需要做的事情?
编辑更新:这是一个跨站点脚本问题.我继续使用外部服务器并运行完全相同的脚本,并能够检索和解析包含查询结果的XML文档.唯一的障碍是弄清楚如何从外部服务器执行此操作.我可以访问外部服务器的配置,并将研究如何操作它以允许通过来自其他站点的数据库查询进行访问.
解决方法:
由于它是ajax请求,因此您无法从其他域提取数据:http://en.wikipedia.org/wiki/Same_origin_policy
您在这里所能做的就是来自您自己的服务器(同一个域)的请求数据,并让它从外部数据库中提取数据.
编辑:此响应超过3年,现在使用现代浏览器(不是IE< 10),您可以使用跨源资源共享 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
内容总结
以上是互联网集市为您收集整理的javascript – AJAX没有处理302重定向全部内容,希望文章能够帮你解决javascript – AJAX没有处理302重定向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。