当前位置: 首页 > 知识库问答 >
问题:

前端 - Vue2 Proxy代理服务器HTTP头溢出错误处理?

夏知
2024-04-23

新手提问:
在使用Vue2的Proxy代理服务器中,出现了以下错误,上网搜后得知是http报文过长。情景是 传输账号和密码,token放在了Authorization中。怎么解决?
Proxy error: Could not proxy request /login/match?stn=20240101&stp=[-密码-] from localhost:8080 to http://localhost:3367.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (HPE_HEADER_OVERFLOW).

-

共有1个答案

卢聪
2024-04-23

这个错误提示 HPE_HEADER_OVERFLOW 表示HTTP请求头的长度超过了Node.js默认的最大限制。这通常发生在将大量的数据放在HTTP头中,如Authorization token,尤其是在处理如JWT(JSON Web Tokens)等较大的令牌时。

要解决这个问题,你有几个选择:

  1. 减少HTTP头的大小:检查你的Authorization token是否过大。如果是JWT,尝试减少其中的数据量或优化它。例如,你可以考虑不在JWT中存储不必要的用户数据。
  2. 增加Node.js的HTTP头大小限制:你可以通过修改Node.js的HTTP模块来增加头的大小限制。这可以通过以下代码实现:
const http = require('http');const https = require('https');const httpAgent = new http.Agent({ maxHeadersCount: 1000 }); // 设置为更大的值const httpsAgent = new https.Agent({ maxHeadersCount: 1000 }); // 设置为更大的值module.exports = {  devServer: {    proxy: {      '/api': {        target: 'http://localhost:3367',        changeOrigin: true,        secure: false,        agent: process.env.NODE_ENV === 'development' ? httpAgent : httpsAgent      }    }  }};

在上面的代码中,我们创建了一个新的HTTP和HTTPS代理,并将maxHeadersCount的值设置得更大。然后,我们将这些代理应用到devServer的proxy配置中。

请注意,这种方法可能会增加内存使用,因为更大的头需要更多的内存来存储。因此,请确保你的应用程序有足够的内存来处理更大的头。

  1. 考虑将令牌存储在cookie中:如果你的应用程序支持,你也可以考虑将令牌存储在HTTP cookie中,而不是放在HTTP头中。这将避免头的大小限制问题,但可能需要你修改应用程序的代码以处理cookie中的令牌。

选择哪种方法取决于你的具体情况,包括你的应用程序的需求,以及你愿意投入多少时间来修改代码。

 类似资料:
  • 问题内容: 我正在使我的HTTP服务器正常关闭。我从这里的帖子中获取了一些技巧,到目前为止,已经建立了这样的代码: 因此,我对这一切现在如何工作有一些疑问: 1)我在上面链接的答案指出“注意:下一行可能没有时间运行…”以进行goroutine中的错误处理。我如何确保可以保证完成?我需要在该线程上进行某种阻塞还是在它可以调用的主线程上建立一个通道? 2)截至目前,我不知道如果我有告诉的方式,如果我的

  • 问题内容: 我有一个新编码的GWT / GAE应用,该应用在客户端上使用RequestFactory和Editors,在背面使用自定义的Objectify DAO服务。 flush()然后persist()路径在成功时可以正常工作。客户端JSR 303也可以正常工作。 我的问题是如何触发服务器警告/错误并处理UI更新? 我在http://turbomanage.wordpress.com/2010

  • 在CSS中,如果设置了一个盒子的宽度与高度,则盒子中的内容就可能超过盒子本身的宽度或高度。此时,可以使用 overflow 属性来控制内容溢出时的处理方式。 overflow属性的可选值有 visible | hidden | scroll | auto,除了body 和 textarea 的默认值为auto外,其它元素的默认值为visible。 如果不设置 overflow属性,则默认值就是 v

  • 我们正试图使用JMeter进行性能测试。 我使用了jmeter中提供的使用HTTP代理服务器的示例指南,但我的记录控制器没有记录任何请求。 在做了大量研究之后,下面是完整的场景。 我正在使用公司代理服务器访问外部站点。所以,经过一番研究,我明白我需要通过命令行提供所有信息来启动我的jeter。例如。 现在我明白了,我不需要混淆这些设置。默认情况下,JMETER使用自己的内部代理服务器。 我们需要配

  • 问题内容: 我是Jetty的新手,我尝试在此处运行示例程序“ http://www.codeproject.com/Articles/128145/Run- Jetty-Web-Server-Within-Your- Application ”,但我收到了错误消息我的页面“ http:// localhost:8585 / runJetty / ” 我从Eclipse获取的错误日志: 我的xml文

  • 我们正在构建一个JavaSDK,以简化对我们提供REST API的服务之一的访问。这个SDK将由第三方开发者使用。我正在努力寻找最好的模式来实现更适合Java语言的SDK中的错误处理。 假设我们有其余的endpoint:。这可能会返回以下HTTP状态代码: 401:用户未通过身份验证 403:用户没有访问此照片的权限 404:没有带那个身份证的照片 该服务看起来像这样: 在上面的代码中,我还没有提