gpt4 book ai didi

javascript - 找出 Jquery ajax 请求被重定向到的位置

转载 作者:可可西里 更新时间:2023-11-01 02:25:24 25 4
gpt4 key购买 nike

所以-我有这个ajax请求,看-。金发女郎,大约 6 英尺高,看起来像这样:

$.ajax({
url: 'http://example.com/makeThing',
dataType: 'html',
type: 'POST',
data: {
something:someotherthing
},
complete: function(request, status) {
console.log("headers=" + request.getAllResponseHeaders(););
}
});

发生的情况是对“/makeThing”的请求返回一个 302 重定向到第二个 url:“getThing/abc123”。我想要做的就是找出第二个 url 是什么(以编程方式 - 每次都会不同,所以只检查 firebug 对我没有帮助)。我已经尝试将返回到“完成”回调的响应 header 连接起来,但这只给了我第二个请求返回的内容。

约束:- 我无法控制正在运行的服务器 - 只有 js。- 必要时可以切换框架(dojo?原型(prototype)?)

理想情况下,我会对/makeThing 执行某种仅 header 请求,以通过仅获取初始 302 响应的 header 来找出重定向 url 是什么。

如果失败(因为 jquery 自动跟随重定向并且似乎没有办法在请求之间介入),我会检索最终响应并使用它以某种方式从...获取 url 什么?也许是请求对象?

TLDR:发送 ajax 请求。框架自动遵循生成的 302 重定向。我如何找出它重定向到的位置?

编辑,澄清:最终 url 每次都会不同 - 调用“makeThing”会导致服务器创建此后托管在“getThing/abc123”的内容

最佳答案

如果可能,让您的服务器在这些页面(目标页面,而不是重定向页面)上设置标题,例如设置 "current-location" 标题,然后您可以这样做:

$.ajax({
url: 'http://example.com/makeThing',
dataType: 'html',
type: 'POST',
data: {
something:someotherthing
},
complete: function(request, status) {
var location = request.getResponseHeader("current-location");
}
});

是的,这有点老套,但由于重定向是在 XmlHttpRequest 对象(您无法访问的事件)内部处理的,因此您没有太多选择。

You can check the spec ,这是 XmlHttpRequest 的预期行为:

If the origin of the URL conveyed by the Location header is same origin with the XMLHttpRequest origin and the redirect does not violate infinite loop precautions, transparently follow the redirect while observing the same-origin request event rules.

关于javascript - 找出 Jquery ajax 请求被重定向到的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com