Ant*_*ony 22 ajax jquery redirect xmlhttprequest
首先,我在Google Chrome中工作,如果有帮助的话.这是行为:
我通过jQuery向远程站点发送xhr请求(这是一个chrome扩展,我设置了所有的跨站点设置......):
$.ajax({
type: "POST",
contentType : "text/xml",
url: some_url,
data: some_xml,
username: user,
password: pass,
success: function(data,status,xhr){
alert(data);
},
error: function(xhr, status, error){
alert(xhr.status);
}
});
Run Code Online (Sandbox Code Playgroud)
正在设置的URL返回302(这是预期的),Chrome遵循重定向(也是预期的).
新网址会返回凭据提示,这些提示不会从原始请求中提取,因此Chrome会显示登录对话框.如果我输入原始凭据,我会收到有关发送无效请求的响应(这是一个有效的HTTP请求 - 200 - 远程服务器只是不喜欢其中一个标头).
在Chrome中查看开发者窗口时,会发送两个请求.第一个是原始URL,其中包含AJAX请求中设置的所有设置.第二个是重定向URL,方法为"GET","POST"字段中没有任何内容,也没有凭据.
我不知道我能做什么.我要么:
获取重定向网址,以便我可以发送第二个请求(xhr.getResponseHeader("Location")不起作用),
让新的重定向请求保留原始请求中的设置,或
获取错误来自的最终URL,以便我可以发送另一个请求.
理想情况下,我不希望用户必须在此对话框中第二次输入他们的凭据,但如果我能获得最终的URL,我会采取我能得到的.
Raj*_*ani 13
根据您的问题,我不完全确定您是指代HTTP身份验证还是基于表单的身份验证方案,因此我将解决这两个问题.
获取重定向URL,以便我可以发送第二个请求(xhr.getResponseHeader("Location")不起作用),
通过XHR的构建方式(特别是在Chrome中):XHR不是很灵活,并提供相对高级的API,浏览器在所有其他请求中具有相同的行为(地址栏网址,图像源网址,嵌入式脚本网址),即重定向是透明处理的.JavaScript中不会抛出任何事件,提醒您此重定向或中间302/301状态代码,您只会收到最终的状态代码和数据.因此,无法从响应中检索"位置"标头,因为最终响应将不包含"位置"标头.
让新的重定向请求保留原始请求中的设置,
XHR不提供此选项,它将是一个不正确的默认行为.为什么在默认情况下会发生这种情况的示例:
Acme corp为其员工提供URL短链接服务.我点击了我从同事处收到的短链接,并通过Acme的短链接服务提示进行HTTP身份验证.此身份验证后会发生重定向.没有理由将站点重定向到需要我的凭据,因此浏览器传递此信息的行为不正确(实际上是安全问题).同样,不应转发POST数据,因为它只能供预先直接URL使用.
获取错误来自的最终URL,以便我可以发送另一个请求.
遗憾的是,出于安全原因和标准定义,标准XHR对象(包括Chrome用于扩展中的跨站点请求的对象)不提供任何方式来访问具有错误的最终URL.您只能访问最终的HTTP状态以及最终URL返回的任何数据.
-
鉴于此,您可以选择一些选项,具体取决于您对情况的控制程度:
1)如果您可以控制重定向服务器,请考虑包含信息.在您的AJAX请求中指示一个AJAX客户端,并让服务器返回数据(即一个json对象),指示应该进行重定向.
或者,如果打算始终传递身份验证数据,请考虑实现一些会话传递机制或包括身份验证信息.在重定向到的URL中,目标URL可以使用此信息.
2)如果您可以控制重定向的目标,请考虑在生成身份验证失败页面时包含目标的URL.XHR对象可以访问此响应数据,并可以解析它以继续执行新请求.
3)如果您无法控制重定向站点或目标站点,请考虑托管代理服务器以处理请求并特别捕获302.
http://myserver/?url=http://redirectsite.com&user=...&pass=...
4)如果以上都不是选项,那么最不可取但又可行的选择是为运行本机代码的Chrome构建NPAPI扩展.这将使您完全控制请求,并允许您做任何事情.但请注意,这是以更复杂的开发,潜在的安全问题和更少的用户需求为代价的.
不幸的是,没有办法阻止 xhr 自动跟踪重定向或为重定向目标设置凭据(无论如何,这都是相当不安全的,因为这将允许第一个站点将凭据重定向到任何站点,而不仅仅是您想要获取的站点他们)。
| 归档时间: |
|
| 查看次数: |
16659 次 |
| 最近记录: |