JS/jQuery 获取 HTTPRequest 请求标头?

场景:在jquery封装的ajax请求中,默认是异步请求。

需要定一个秘钥进行解密,所以只能存放在请求头中。然后需要值的时候去请求头中读取。

注意:dataType 设置,根据请求参数的格式设置,如果是加密字符串,就设置为text,如果是json,就设置为json,否则,接口请求状态码是200,但是会进入到error函数中。

javascript 复制代码
$.ajax({
    url: 'url',
    data:{'req':somedata},
    type:"post",
    cache:'false',
    dataType:'json',//注:
    headers:{'key':'bar'},  //设置请求头
    success: function() {
        alert(this.headers.key);//获取请求头
    },
    error:function(){
    }
});

目前到上面我的问题就解决了。

参考文章:https://www.it1352.com/2772303.html

但是我认为只有已经在 headers 中定义的标题是可用的(不确定如果标题被改变会发生什么(例如在 beforeSend 中).

您可以在以下位置阅读更多关于 jQuery ajax 的信息:http://api.jquery.com/jQuery.ajax/

如果您只想捕获对 XMLHttpRequest 上的 setRequestHeader 的所有调用的标头,那么您可以包装该方法.这有点麻烦,当然您需要确保在任何请求发生之前运行包装下面的代码的函数.

javascript 复制代码
// Reasign the existing setRequestHeader function to 
// something else on the XMLHtttpRequest class
XMLHttpRequest.prototype.wrappedSetRequestHeader = 
  XMLHttpRequest.prototype.setRequestHeader; 

// Override the existing setRequestHeader function so that it stores the headers
XMLHttpRequest.prototype.setRequestHeader = function(header, value) {
    // Call the wrappedSetRequestHeader function first 
    // so we get exceptions if we are in an erronous state etc.
    this.wrappedSetRequestHeader(header, value);

    // Create a headers map if it does not exist
    if(!this.headers) {
        this.headers = {};
    }

    // Create a list for the header that if it does not exist
    if(!this.headers[header]) {
        this.headers[header] = [];
    }

    // Add the value to the header
    this.headers[header].push(value);
}

现在,一旦在 XMLHttpRequest 实例上设置了标头,我们就可以通过检查 xhr.headers 例如

javascript 复制代码
var xhr = new XMLHttpRequest();
xhr.open('get', 'demo.cgi');
xhr.setRequestHeader('foo','bar');
alert(xhr.headers['foo'][0]); // gives an alert with 'bar'
相关推荐
~无忧花开~14 分钟前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
@大迁世界1 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
前端Hardy3 小时前
Wails v3 正式发布:用 Go 写桌面应用,体积仅 12MB,性能飙升 40%!
前端·javascript·go
Highcharts.js3 小时前
Highcharts React v4 迁移指南(下):分步代码示例与常见问题解决
javascript·react.js·typescript·react·highcharts·代码示例·v4迁移
Laurence3 小时前
Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
前端·javascript·c++·后端·交互·qwebchannel·互操作
Pu_Nine_94 小时前
JavaScript 字符串与数组核心方法详解
前端·javascript·ecmascript
这是个栗子4 小时前
前端开发中的常用工具函数(六)
javascript·every
kyriewen4 小时前
异步编程:从“回调地狱”到“async/await”的救赎之路
前端·javascript·面试
前端Hardy4 小时前
别再手动写 loading 了!封装一个自动防重提交的 Hook
前端·javascript·vue.js
前端Hardy4 小时前
前端如何实现“无感刷新”Token?90% 的人都做错了
前端·javascript·vue.js