如何在重定向 URL 的标头中拦截和获取位置
How to intercept and get Location in header for redirect URL?
我有一个在休息调用中传递给我的 uri,它是一个重定向 URL,我希望能够拦截调用以获取标头中的重定向"位置"。
以下代码为位置标头返回 null。执行此客户端的正确方法是什么?
$(document).ready(function () {
$.ajax({
url: 'http://myserver.com/redirect?token=AAAnY13Y-76LZ4zXDOd', // obviously not cross domain and contains redirect location to a youtube link to embed in my page, http://www.youtube.com/embed/bl2j345-xy
data: {
something: 'someotherthing'
},
complete: function (request, status) {
var location = request.getResponseHeader("Location"); // this is null...it shows up in Fiddler as http://www.myotherserver.com in the Location Header
},
error: function (request, error) {
alert(request.responseText);
}
});
});
使用这个小提琴。我稍微更新了您的代码,添加了一些用于调试的控制台输出,因为我目前总是收到错误:NETWORK_ERR: XMLHttpRequest Exception 101
。
我所做的主要更改(我认为可能是您的空标题的原因)是设置async: false
。这很重要,因为您不希望请求在完成之前返回。如果未指定,则默认设置为 async: true
,这会导致 ajax 调用立即返回,这可能就是为什么即使调用成功也不会看到响应标头的原因。
我还添加了一个带有简单调试的success: function...
回调,以确保它在进入那里时被捕获。
另请查看 ajax 文档中有关跨域非异步请求和跨域设置的部分:
异步
默认值:真
默认情况下,所有请求都是异步发送的(即默认情况下设置为 true)。 如果需要同步请求,请将此选项设置为 false。 跨域请求和数据类型:"jsonp"请求不支持 同步操作。跨域(新增 1.5)
默认值:对于同一域请求为 false,对于跨域请求
为 true,则为 true 如果您希望在同一域上强制跨域请求(例如 JSONP),请将 跨域的值为 true。例如,这允许服务器端 重定向到另一个域。
我不确定重定向是否被视为跨域重定向,但我猜上述因素的组合是导致错误和空请求标头的原因。
为什么不设置 -> http://myserver.com/redirect?token=AAAnY13Y-76LZ4zXDOd 以返回重定向位置 http://www.myotherserver.com所以:
complete: function (request, status) {
window.location.href=request;
}
- 通过传递的参数位置获取jQuery中图像的宽度
- 如何使用位置获取滚动功能获取 HTML 中的元素标签
- 如何在鼠标位置获取所有元素
- 在插入符号位置获取DOM元素
- 是否可以在javascript中基于地理位置获取街道详细信息
- 根据用户光标的位置获取 iframe ID
- Angular js cordova地理位置获取当前位置并在后台将数据发送到服务器
- 使用光标位置获取元素内的文本
- 在 AngularJS 中按路径位置获取控制器
- 如何使用 IP 地址 + 地理位置获取用户位置 Asp.Net.
- 导航器地理位置获取当前位置不起作用
- 使用javascript按位置获取元素的id
- 在数组位置获取并设置cookie值
- 在指定位置获取元素JavaScript,并将其映射回源HTML
- 从请求脚本的位置获取主机
- 我们如何使用类名通过它在 Jquery 中的位置获取第二个元素
- API,用于从智能手机上的GPS位置获取附近商店的名称
- Jquery谷歌地图位置-获取选择选项
- Javascript,使用地理位置获取城市名称
- 从slector处理多个id的位置获取实际id