美文网首页网络
一次生产上由于Nginx引起的HTTP请求Header参数丢失的

一次生产上由于Nginx引起的HTTP请求Header参数丢失的

作者: AbstractCulture | 来源:发表于2020-09-02 19:45 被阅读0次

    问题描述

    在一个第三方SSO的对接环境中,服务端需要拿到当前前端的URL进行重定向,此时出于安全方面的考量,研发组决定把重定向的URL放到HTTP请求中的Header进行传参,参数的名称为redirect_url,在测试环境跑的时候非常通畅,但是生产环境获取这个redirect_url进行URLEncoder.encode()操作的时候,出现了NPE异常.

    产生问题的原因

    在开发环境的时候,由于前端使用node.js进行代理端口,所以并没有什么问题,但是由于生产环境使用的是Nginx进行静态资源压缩,所以HTML页面发起的HTTP请求都是被Nginx所转发的,经过查阅资料发现,Nginx配置的underscores_in_headers项自动过滤了Header头部的下划线的参数。

    解决问题的方案

      1. 把参数名进行重写,避开拦截规则。比如:redirectUri;
      1. 将Nginx的underscores_in_headers设置为false.

    感想

    DEV环境和生产环境是会有很多不一样的地方的,对于这些问题的排查要一个个去缩小BUG范围,首先检验前端参数与后端参数是否一一对应,如果前端传值没问题,那么读后端接口进行校验,如果本地测试都没问题,那么看看数据传输的过程中是否有中间件对参数进行了一些过滤。

    相关文章

      网友评论

        本文标题:一次生产上由于Nginx引起的HTTP请求Header参数丢失的

        本文链接:https://www.haomeiwen.com/subject/asawsktx.html