[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

这篇具有很好参考价值的文章主要介绍了[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

如果你的node.js提示:[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

那么,代表你返回了结果,但是最后你又不小心再返回了一次。通常是由于方法没有进行等待,或者多条件判断缺漏造成的。


解决方案:

情况一:返回机制问题

通过success/error模式来返回结果,取消最终的默认返回;

或者通过await方法返回再return结果即可。

   axios.get(optionsEntitlement.url,{headers,httpsAgent})
    // axios.get(optionsEntitlement.url,optionsEntitlement)
    .then(function (response) {
        // handle success
        console.log("entitlement success:"+response);
        res.status(200).send(response)
    }).catch(function (error) {
            // handle error
            console.log("entitlement error:"+error);
            res.status(500).send({
                "message": {
                    "code": "AIE0001",
                    "type": "E",
                    "timestamp": new Date().toISOString(),
                    "text": "System Unavailable",
                    error
                }
            });
        });
    // res.json({ title: 'LMD GCS Node - entitlement' });
});

情况二:

服务器会输出响应头,再输出主体内容,如果你在代码中设置了res.writeHead()函数,然后再使用res.send()方法,就会出现这个错误。通常要使用res.end()

const body = 'hello https://zhengkai.blog.csdn.net/';
response
  .writeHead(200, {
    'Content-Length': Buffer.byteLength(body),
    'Content-Type': 'text/json;charset=utf-8',
  })
  .end(body);

认识 Express 的 res.send() 和 res.end()

相同点

Express 的 res.end() 和 res.send() 方法的相同点:

  1. 二者最终都是回归到 http.ServerResponse.Use 的 response.end() 方法。
  2. 二者都会结束当前响应流程。

不同点

Express 的 res.end() 和 res.send() 方法的不同点:

  1. 前者只能发送 string 或者 Buffer 类型,后者可以发送任何类型数据。
  2. 从语义来看,前者更适合没有任何响应数据的场景,而后者更适合于存在响应数据的场景。

总结

Express 的 res.end() 和 res.send() 方法使用上,一般建议使用 res.send()方法即可,这样就不需要关心响应数据的格式,因为 Express 内部对数据进行了处理。文章来源地址https://www.toymoban.com/news/detail-496772.html

到了这里,关于[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • http请求报错context deadline exceeded (Client.Timeout exceeded while awaiting headers)

    context deadline exceeded (Client.Timeout exceeded while awaiting headers) 当你遇到该问题时可能你已经调试很久了仍然没有实际解决,一起来看看是否对你有帮助。 原因: 目标地址不可达、网络不通导致; 出现此情况,可以看看ping www.baidu.com是否正常: 如正常则可能是自身问题,如不正常

    2024年02月11日
    浏览(49)
  • http.header.Set()与Add()区别;

    在Go语言中进行HTTP请求时, http.Header 对象表示HTTP请求或响应的头部信息。 http.Header 是一个 map[string][]string 类型的结构,用于存储键值对,其中键表示HTTP头字段的名称,值是一个字符串切片,可以存储多个相同名称的头字段值。 http.Header 提供了两个主要的方法来设置头部字

    2024年02月07日
    浏览(38)
  • ngx_http_set_response_header阅读

    1.关于设置头的一些函数指针初始化 2.设置header的初始化函数 3.ngx_http_set_response_header阅读理解 4.最终的执行是在ngx_http_headers_filter函数中 5.ngx_array_t的定义 6.看一看special_header的处理-ngx_http_send_error_page

    2024年02月05日
    浏览(49)
  • Request Headers和Response Headers中的Content-Type以及ResponseType

    HTTP请求响应过程中的Content-type你真的清楚吗 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景 axios配置请求头content-type浅谈 HTTP 请求头中的Content-Type类型 背景: Request Headers中的Content-Type: XMLHttpRequest 的 responseType 属性 Response Headers中的Content-Type R

    2024年02月13日
    浏览(69)
  • 跨域问题详解/django-cors-headers/django-cors-headers源码

    # 以后只要前后端分离项目,都会出现跨域问题,咱们要解决 # 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对

    2024年02月11日
    浏览(38)
  • 浏览器请求加Headers

    Chrome 应用商店安装 Modify Header Value 选项里添加 URL、Header Name、Header Value 添加 URL: http://127.0.0.1/ Header Name: Token Header Value: 123 访问 http://127.0.0.1:5000/ HTTP Headers - HTTP | MDN

    2024年02月07日
    浏览(53)
  • Python设置请求头(Headers)

    在进行网络请求时,设置请求头(Headers)是非常常见和重要的操作。请求头包含了一些关键信息,如用户代理(User-Agent)、授权凭证(Authorization)、内容类型(Content-Type)等,它们可以帮助我们进行身份验证、指定请求的类型以及向服务器传递必要的信息。在Python中,我们

    2024年02月03日
    浏览(43)
  • 【JS】获取 Headers 头部信息

    当我们请求一个接口的时候,会发现 res 里面包含一个 headers 响应头信息: 首先他里面肯定是有值的,只不过是一个Headers 对象,直接提供对象点语法是取不出来的 这时候就要用到 Headers 对象 自带的方法了 创建一个空的 Headers 对象是简单的: 2.1、追加:append() append() 方法:

    2024年02月10日
    浏览(41)
  • nginx转发headers内容丢失解决办法

    开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。 nginx代理默认会把header中参数的 \\\"_\\\" 下划线去掉,所以后台服务器后就获取不到带\\\"_\\\"线的参数名。需要在htt

    2024年02月11日
    浏览(63)
  • Python实现自定义请求头消息headers

    使用python爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers中的User-Agent,如果没有对headers进行设置,User-Agent会声明自己是python脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。 而修改headers可以将自己的爬虫脚本伪装成浏览器的正

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包