木灵鱼儿
阅读:612
Nginx默认不支持带下划线的头信息
前言
最近国庆了,由于主要计划被迫放弃,所以只能走点次要计划,就是将个人全栈开发的书签系统移动到其它服务器上,主要还是因为财力问题,无法供给多台服务器,腾讯云也没有什么好活动,全是老用户与狗不得参与系列。
无奈的搬运,其中最简单的是项目打包带走,数据库的还原,站点的配置,其中我就遇到了个贼奇葩的问题,就是我的头信息总是获取不到。
一开始我是以为是我的反代服务的问题,因为是nodejs的后端服务,如果想要通过域名访问api就不得不通过反代的方式来使用。
反代是将a的请求接受后自己再发给真实服务,然后将真实服务的返回再返回给a,其中我们知道一个xhr请求是有很多参数的,其中header头信息也是一种。
如果我们的反代服务没有将header转发给真实服务,比如安全过滤啥的,这就会导致我们真实服务器参数获取失败而报错。
所以我一直在这块找解决方案,找了一堆又一堆啊,都没有用。
最后看到这么一条说明:nginx默认对header中的key不支持下划线;我转念一想,我草,我的key不就是带下划线嘛!
于是乎我在nginx的配置中增加了一个配置,问题就解决了。
解决方法
在nginx中配置一个:
underscores_in_headers on;
问题就解决了。
由于我使用的是宝塔,所以这里说一下具体步骤:
打开宝塔的nginx管理,注意不是单个网站的管理,因为我们需要修改nginx的http模块,然后找到配置修改,在如下位置增加一下:
保存后重载下配置或者重启下nginx即可。
此时问题解决。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

相关推荐
docker 常用命令 作业
安装nginxdocker pull nginx # 下载完成后运行 docker run -d --name nginx1 -p 8080:80 nginx # 后台运行,容器命名为nginx1,将容器的80映射到主机的8080端口此时我们访问:localhost:8080就能看到Welcome to nginx!页面安装Tomcatdocker镜像里面的tomcat官方文档有这么一段命令:docker run -it --rm tomcat:9.0run可以直接自动下载对应的镜像,所以后面可以像pull那样接tag;-it是交互,--rm表示交互结束后,比如exit退出后,容器...

关于api请求被缓存从而引发的一连串知识(from disk cache)
起因我写了一个axios的get请求,他会在网页加载后运行,从服务器获取数据,根据status状态值来判断我是否需要进行弹窗提示,弹窗会有一个按钮,点击后会通过location.href跳转到另一个页面,在另一个页面,会有一个返回按钮,触发history.back()返回上一页。当然,在运行href跳转前,会通过api请求告诉后端,我已经点击了弹窗,下次请求不要再运行弹窗了。但是在下一个页面点击返回时,弹窗依旧会被弹出,后端说他没有看到请求记录,但是前端f12依旧可以看到api请求,并返回了200状态码。由于是手机调试,看不到具体的原因,只有在pc端,在不勾选停用缓存时,才能看到在请求的...
fetch和ajax获取不到头信息的解决办法
今天就遇到一个问题,后端从头信息给我携带了数据,我需要在请求头中获取,但是不管怎么get,返回的永远是null,但是f12去看响应头,那个数据就在那,亮瞎了眼。一个大大的问号?why???谷歌查了下原因,大概就两种:安全限制,不允许客户端获取部分头信息跨域了,对于跨域请求,客户端允许获取的response header字段只限于“simple response header”和“Access-Control-Expose-Headers” ,在“Access-Control-Allow-Headers”中加了无效说到底,还是后端的设置,如果是nigix可以参考下面的代码:以token头信...
nuxt 中axios反代的用法
具体的反代我其实在之前《nuxt 入坑的那些事》就说过了,这里就不多说,主要是讲下我们自己axios怎么处理反代。在nuxt中我们其实可以自己封装一个axios模块来使用,也就是常见的后台管理项目中对aixos模块化的用法。常常就是import引入axios,然后使用拦截器进行加工处理,然后在导出,使用的时候import这个axios。import axios from "axios"; let api = axios.create({ baseURL: xxxxxx, timeout: 15000, }); //请求前 api.interceptors.r...
fetch 请求报错处理思路
之前写过一片使用fetch下载文件的方法,但是如果后端返回一个错误对象,使用response.blob()会将这个错误对象直接转为blob对象,然后被转为文件下载下来。但实际上我们是要区分处理的,比如是文件流我们就下载文件,是错误对象,我们就进行错误提示和抛出错误。所以这里,我主要分享下我对错误处理的思路。基础知识首先,在fetch第一个then回调中,我们可以对response对象进行三种方法操作:response.text 返回的是一个纯文本 是一个promise对象response.json 返回的是一个对象(json/array) 是一个promise对象response.b...

nginx 跨域
centos 跨域模板location * { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS,DELETE,PATCH'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type...
koa框架6 基础入门之http
http协议HTTP1.0 (RFC-1945) 每次发起一个连接,完成后断开连接,然后因为这样太费资源,又出了1.1,也就是现在常用的httpHTTP1.1 (RFC-2616) 支持持久连接HTTPS (RFC-2818) 安全,加密传输HTTP2.0 (RFC-7540) 加密,头部压缩,服务端推送,请求管线,多路复用http消息结构由两部分组成,一个header头部,一个body内容。header <= 32kbbody <= 1g大小上有限制,2.0的话,容量应该会升级。http状态码1xxx 消息(知道就行,不需要处理)2xxx 成功3xxx 重定向4x...
杰哥
Google Chrome Windows 10笑死,“老用户与狗不得参与”