Ajax和状态302

时间:2011-06-09 20:45:13

标签: javascript ajax jquery http-status-code-302

我遇到了ajax(和/或jQuery ajax)和状态302的问题。

这就是我的尝试:

var xhr = new XMLHttpRequest();
xhr.open("GET", 'some_page_that_I_cant_change.php');
xhr.onreadystatechange = function(){
    console.log(xhr.readyState, xhr.status);
};
xhr.send(null);

some_page_that_I_cant_change.php使用.bin代码重定向到302。我不想下载这个文件,我只想知道文件的路径。例如:

./some_page_that_I_cant_change.php
./path/to/bin/file.bin << I wan't only this path as string

问题是Chrome会自动重定向到该文件,而不会告诉我脚本的路径。有解决方法吗?

3 个答案:

答案 0 :(得分:2)

如果你使用HEAD请求而不是GET请求,我怀疑它会做你想要的。您应该只在响应中看到标题,没有响应正文(即,没有.bin将下载)。

答案 1 :(得分:0)

关于完全相同的主题,有一个较旧的主题与解决方案和解决方案: How to manage a redirect request after a jQuery Ajax call

答案 2 :(得分:0)

总之:我认为你无法做到HTTP协议的原因。
HTTP协议([1]:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)规定302表示重定向URI,并且浏览器遵循。因此,javascript无法获得重定向响应,只是得到最终响应。

所以,你必须通过回复机构获得路径。