所以我有这个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移动到响应主体,我知道这将是最简单的解决方案,因此任何有关解析标头的帮助都会非常棒.
我使用jQuery ajax函数来访问Web服务,但是服务器不是返回带有描述问题的状态代码的响应,而是将请求重定向到具有200头的页面,描述问题.我无法对此进行任何更改,因此我需要以某种方式在客户端上解决它.
示例:请求转到某个找不到的URL,因此我收到302重定向到另一个位置.发送一个新请求,我收到200 OK,从而防止错误回调触发.
有什么方法可以阻止ajax请求跟随重定向,而是调用回调,最好是错误方法.或者,是否可以检测客户端中是否发生了重定向?
我正在调用一个获取 blob 数据的 API。
后端也向我发送标题中的文件名。
我的实际问题是我无法从 api 获取标题。
这是我的service.ts
public openFile(path) {
let url='/download/';
let pathFile= new HttpParams().set('pathFile', path);
return this.httpClient.get(url,{params:pathFile, responseType: 'blob' });
Run Code Online (Sandbox Code Playgroud)
在component.ts 中,我调用了该服务。当我尝试打印时,res.headers我在控制台中未定义。
openFile(path){
this.creditPoliciesService.openFile(path).toPromise().then (data => {
console.log("dataaaaaa",data.headers); // undefined
var blob = new Blob([data], {type: 'application/pdf'});
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob);
}
else {
var fileURL = URL.createObjectURL(blob);
window.open(fileURL);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在开发工具管理员中,我在响应标头中获得信息,但我无法在响应变量中找到它们。
httprequest http-headers typescript angular-services angular
jquery ×2
ajax ×1
angular ×1
header ×1
http-headers ×1
httprequest ×1
javascript ×1
redirect ×1
typescript ×1