JS/jQuery 获取 HTTPRequest 请求标头?

news/2024/7/10 22:49:25 标签: javascript, jquery

场景:在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'

http://www.niftyadmin.cn/n/5246912.html

相关文章

❤ windows 电脑R语言软件安装教程

❤ windows 电脑R语言软件安装教程 安装R和Rstuido软件 介绍 : R语言是用于统计分析,图形表示和报告的编程语言和软件环境;Rstudio是编辑、运行R语言的最为理想的工具之一。 01官网下载R安装包 下载地址为:https://cran.r-pr…

【MATLAB】for循环变量名变化的实现

分享一系列matalb使用的程序小片段。 【MATLAB】MATLAB保存图片 视频的程序:MATLAB怎么保存图片 视频-CSDN博客 文章目录 前言 一、问题 二、代码 三、扩展学习 语法 说明 示例 输入参数 输出参数 局限性 提示 四、总结 前言 程序设计、图像处理和科学计算…

Flask 的执行流程

Flask 的执行流程可以大致分为以下几个步骤: 初始化应用: 在 Flask 中,首先需要初始化一个 Flask 应用。这个应用包含了很多配置信息,例如模板文件夹的位置、静态文件夹的位置等。通常,应用的初始化是通过创建一个 Fla…

前端Flex布局的常用属性及其应用场景

目录 学习目标: 学习内容: 什么是flex布局? 如何使用flex布局? 容器属性 项目属性 flex布局有哪些主要的属性? flex布局的优缺点是什么? 学习时间: 最后总结: 学习目标&am…

【动手学深度学习】(七)丢弃法

文章目录 一、理论知识二、代码实现2.1从零开始实现Dropout2.2简洁实现 【相关总结】np.random.uniform(low,high,size)astypetorch.rand() 一、理论知识 1.动机 一个好的模型需要对输入数据的扰动鲁棒 使用有噪音的数据等价于Tikhonov正则丢弃法&…

MQTT发布、订阅和取消订阅

在本文中,我们将深入了解MQTT发布、订阅和取消订阅相关的内容。如果你刚接触发布/订阅模型,建议阅读本专栏之前的文章。 什么是MQTT发布消息 在MQTT中,一个客户端连接到代理(broker)之后可以立即发布消息。这些消息依…

神经网络常用归一化和正则化方法解析(二)

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

SL1581降压恒压 耐压4V-30V降压5V 2A电流 外围简单,四个元器件

SL1581是一款专为降压恒压应用而设计的芯片,具有耐压4V-30V、降压5V、2A电流输出等特点,外围电路简单,仅需四个元器件。 一、芯片介绍 SL1581是一款专为降压恒压应用而设计的芯片,它采用先进的PWM控制技术,具有高效率、…