【nginx】后端 接收不到请求头中的token

今天在开发的时候发现前端明确向后端传递了请求头,但是后端就是接收不到,网上说是因为跨域问题.经过配置并不是跨域的问题.最后把问题定位在了nginx身上.


前端请求

在这里插入图片描述

如上图,自定义header 的名称中包含了 ‘_’ , 而且后端经过了nginx代理.


underscores_in_headers on

在nginx中默认过滤掉 带 '_'的请求头.
我们只需要在nginx.conf 中添加
underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。

在这里插入图片描述

### 自定义HTTP请求头的方法 #### 使用PHP的CURL库添加自定义请求头 在PHP中,可以利用`curl_setopt()`函数来配置cURL会话选项。为了向HTTP请求添加自定义头部信息,需使用`CURLOPT_HTTPHEADER`这个常量作为第一个参数传递给该函数,并且第二个参数应该是一个数组,其中包含了要附加到请求上的各个头部字段及其对应的值。 ```php <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://example.com"); curl_setopt($ch, CURLOPT_POST, 1); // 设置自定义请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "Authorization: Bearer YOUR_ACCESS_TOKEN" )); curl_exec ($ch); curl_close ($ch); ?> ``` 此代码片段展示了如何创建一个新的cURL资源,指定目标网址以及POST方法之后,通过调用`curl_setopt()`设置了两个自定义请求头:“Content-Type”和“Authorization”。最后执行请求并关闭连接[^1]。 #### Nginx处理带有自定义标头的请求 当客户端发出含有自定义标头的HTTP请求到达Nginx时,这些额外的数据会被当作标准的一部分被解析出来。假设服务器接收到一封电子邮件形式的HTTP请求,在其信封(即请求头部分)里发现了一些特殊的备注——也就是所谓的自定义标头,则Nginx能够识别它们并将之转发至后端应用服务去进一步处理。不过需要注意的是,默认情况下某些特定名称开头的标头可能会受到保护而不允许直接修改或新增;对于其他类型的自定义标头则通常不会存在问题[^2]。 #### 解决跨域资源共享(CORS)问题下的自定义请求头 如果遇到因为尝试添加自定义请求头而导致浏览器抛出关于跨源资源共享策略(Cross-Origin Resource Sharing, CORS)方面的错误提示,这往往是因为响应首部缺少必要的权限声明所致。具体来说,就是在预检请求(Preflight Request)阶段未能获得来自服务器端授予访问控制列表(`Access-Control-Allow-Headers`)内所列明的相关项许可之前,任何试图携带未经认可的自定义字段发起的实际数据传输都将遭到阻止。因此解决办法是在服务器返回的内容里面加入适当范围内的授权说明: ```apacheconf header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Custom-Header"); ``` 上述指令告知浏览器哪些种类的自定义请求头是可以接受的,从而使得前端应用程序能够在不违反安全规定的情况下成功提交包含此类元数据在内的网络请求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸渔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值