客户端应该表现得与众不同吗?怎么样?
所以我有这个jQuery AJAX调用,响应来自服务器的302重定向形式.我想采用这种重定向并将其加载到iframe中,但是当我尝试使用javascript警报查看标题信息时,即使firebug正确地看到它,它也会出现空值.
这是代码,如果它有帮助:
$j.ajax({
type: 'POST',
url:'url.do',
data: formData,
complete: function(resp){
alert(resp.getAllResponseHeaders());
}
});
Run Code Online (Sandbox Code Playgroud)
我真的无法访问服务器端的东西,以便将URL移动到响应主体,我知道这将是最简单的解决方案,因此任何有关解析标头的帮助都会非常棒.
我读过的一篇文章说过,它意味着跳跃(从一个URI跳到另一个URI),但即使实际上根本没有跳跃,我也发现了这个"302"!
我需要将用户从一个页面重定向到另一个页面,但我需要维护原始的referer字符串.因此,举例来说,如果他们开始了对http://www.othersite.com/pageA.jsp,点击一个链接,将他们带到http://www.mysite.com/pageB.jsp,然后执行302重定向到http://www.mysite.com/pageC.jsp,我需要referer字符串包含" http://www.othersite.com/pageA.jsp "
这是302重定向的正常行为吗?或者我的原始引用会被删除,支持" http://www.mysite.com/pageB.jsp "?那是不可取的.
我不知道它是否有任何区别,但我在JSP中工作,我正在使用response.sendRedirect()来执行302重定向.
我应该提一下,我做了一个实验,它似乎保留了原始的referer字符串(" http://www.othersite.com/pageA.jsp "),但我只是想确保这是正常的默认值行为,而不是我的怪异.
谢谢您的帮助.
编辑添加:
虽然我目前正在使用302重定向,但我可能会使用301重定向.你知道301重定向的行为是否更可靠?
在302重定向期间发回cookie是否有任何问题?例如,如果我创建一个return-to-url cookie并在同一个响应中重定向用户,那么任何(现代)浏览器都会忽略cookie吗?
Web应用程序的常见方案是在修改数据库的POST后重定向.就像在用户创建数据库对象后重定向到新创建的数据库对象一样.
似乎大多数Web应用程序使用302重定向,但如果您希望使用GET获取重定向中指定的URL,则303根据规范似乎是正确的做法.从技术上讲,使用302,浏览器应该使用与获取原始URL相同的方法获取指定的URL,这将是POST.大多数浏览器不会这样做.
302 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3
303 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4
我应该使用302还是303?
我在登录页面,css文件和js文件中有一些包含.
<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../../ext/bootstrap.js"></script>
Run Code Online (Sandbox Code Playgroud)
不幸的是,浏览器为这些请求获得了302响应.Forms Auth将请求视为未经授权并将其重定向到登录页面.它没有意识到请求首先来自登录页面.
GET http://localhost:50880/ext/resources/css/ext-all.css HTTP/1.1
HTTP/1.1 302 Found
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/LogOn?ReturnUrl=%2fext%2fresources%2fcss%2fext-all.css">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)
我想也许设置包含文件夹(ext)的权限可能对每个人都有帮助.
我在其他项目中没有遇到过这个问题.
我使用jQuery向我的服务器发出一个AJAX POST请求,该请求可以返回状态为302的HTTP响应.然后,JavaScript只是向此URL发送GET请求,而我想在此响应中将用户重定向到URL.这可能吗?
我有一个反向代理,检查几个应用程序的全局身份验证.当用户断开连接但仍尝试使用我的应用程序时,代理会发送302响应:
HTTP/1.1 302 Found
Date: Wed, 11 Sep 2013 09:05:34 GMT
Cache-Control: no-store
Location: https://other.url.com/globalLoginPage.html
Content-Length: 561
Content-Type: text/html; charset=iso-8859-1
Via: 1.1 my-proxy.com
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
在angularJs中,调用错误回调,但响应头为空,状态为0,数据为空字符串.所以似乎我真的无法处理响应...
我已经看到了关于这个主题的几个问题,我仍然不明白发生了什么(CORS因为代理或不同的域名location?,302浏览器行为?).
特别是这部分来自答案(/sf/answers/1253241321/):
注意:如果您的服务器设置响应代码301或302,您将无法获取Location标头,因为XMLHttpRequest对象将自动且透明地跟随它.
这个XMLHttpRequest对象怎么样?
在一个非常旧版本的Chrome(不能使用更新的版本)中,我可以在网络面板中看到相应的请求,但由于没有响应,它似乎失败了.
在最新版本的Firefox中,没有任何进展.
我可以做任何事情,因为我无法更改代理配置和响应吗?
更新:
我今天重播了我的场景,并且由于更新版本的firebug,我能够获得有关正在发生的事情的更多细节.
在我的问题中,我离anwser不远:跨域策略.
由于它是我的应用程序发出的HTTP请求,因此浏览器拒绝以下XMLHttpRequest(该应用程序看起来像是同一个请求).因此错误和空响应.
所以我认为我无能为力
由于我们的网络服务器配置错误,主域名将302重定向发送到新位置.我们解决了这个问题.清空浏览器缓存时,一切正常.
对于没有清空缓存的"普通"客户端:302重定向在浏览器中保留多长时间?
我正在寻找默认设置下每个主要浏览器(Chrome,Firefox,Safari,Opera,Edge,IE 12)的特定缓存时间(如果有的话).
redirect ×5
http ×3
ajax ×2
jquery ×2
angularjs ×1
asp.net-mvc ×1
browser ×1
cookies ×1
header ×1
http-headers ×1
http-referer ×1
javascript ×1
jsp ×1
referrer ×1