生成PDF时出现400-Bad Request请求头过长问题求解决方案
解决PDF生成时出现HTTP 400请求头过长的办法
问题说明
生成PDF文件至第5页左右时,页眉和页脚处显示HTTP错误400-Bad Request-Request Header Too Long,响应头示例如下:
Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: // 已隐藏地址 Cache-Control: no-store, no-cache Content-Disposition: attachment; filename=Utskrift.pdf Content-Length: 162568 Content-Type: application/pdf Date: Tue, 25 Oct 2022 08:57:16 GMT Expires: -1 Pragma: no-cache X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET
可行解决方法
- 精简请求头内容:排查请求里的Cookie、自定义Header等数据,尤其是累积的会话信息或重复添加的字段,删掉不必要的内容。如果是浏览器端生成PDF,可尝试清除当前站点Cookie后重试。
- 调整ASP.NET服务器请求头限制:从响应头能看出后端是ASP.NET,可修改Web.config配置增大请求头允许长度:
注意按需调整数值,避免过度放宽带来安全风险。<system.web> <httpRuntime maxRequestLength="1048576" requestValidationMode="2.0" maxQueryStringLength="2097151" maxUrlLength="2097151" /> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxQueryString="2097151" maxUrl="2097151" /> </requestFiltering> </security> </system.webServer> - 优化PDF生成逻辑:如果每页生成时都重复发送请求并携带相同头部数据,改成一次性传递必要信息,或把状态存在会话里而非每次都附加到头部。比如别在页眉页脚的请求里重复携带大量认证、上下文数据。
- 检查代理/中间件设置:如果部署环境有反向代理(如IIS、Nginx),要确认代理服务器的请求头长度限制,确保代理层的限制值不低于后端服务器配置。
内容的提问来源于stack exchange,提问作者Stefan Fernström
相关产品推荐
相关产品推荐

