首页 > 编程知识 正文

解析HTTP请求header错误,apache url重定向

时间:2023-05-06 19:43:51 阅读:12455 作者:2004

前言

最近,在项目的http请求中使用header的频率很高,所以对header的使用方法和几个孔进行了总结。

常见委托人的公共头

典型委托人发送的公共header包括:

名字

样品

说明

主机

www.xxx.com

这次http请求的主机地址

内容类型

日本APP/JSON

开机自检、put请求body数据格式

接受语言

zh-CN

接收数据的内容语言列表

用户代理

Mozilla/5.0(windowsnt6.1; WOW64; rv:54.0 ) Gecko/20100101 Firefox/70.0

现在,发出请求的用户信息浏览器或设备版本信息可以检索设备和版本信息,以进行版本兼容性或设备区分

复写者

在网站上,经常表示请求开始前的页面地址,也就是引导到该页面的前一个页面地址。 在此基础上可以进行百度、谷歌等搜索引擎到当前页面的关键词分析。

饼干

sensorsdata2015jssdkcross={%2}

此域名下以前存在的cookie数据

连接

关键活动

是否需要持久化链接

日期

Dec,26 Dec 2019 17:30:00 GMT

请求开始时刻

除了上述请求体的公共header外,还可以定义其他header,如token、移动端唯一设备id、用户id和城市id等自己的业务基本属性。

在此基础上,还可以根据设备、用户和点击链接进行用户行为分析,优化当前产品,并用于广告个性化推荐

服务端可以根据这些基本信息记录各项行为;

nginx,使用apache服务器过滤header下划线

问题的发生和定位

上述几种header的使用方法和常见的公共header,上周的业务使用中出现了一些问题。 客户端通过header传递了key为a_b的header,但我们的服务器在getHeader中得到了null。 其他header正常,检查了拼写问题,用Charles工具抓住了包

因此,我想是不是代理服务器的问题。 虽然每个服务端都使用nginx进行代理转发,但如果查看相关资料,则默认情况下,nginx服务器会过滤掉http请求中带下划线的header,即使丢失也不会透明。 必须按如下所示在配置中选中此选项。

nginx.conf

http

{

underscores_in_headers on;

}

复制代码

原因

为什么nginx和apache服务器不传输名称加下划线的header? 查阅相关资料,公共网关接口公共网关接口(CGI是Web服务器运行时的外部程序规范) )的历史遗留问题如下,下划线和中线均为CGI系统变量

ifyoudonotexplicitlysetunderscores _ in _ headers on;nginxwillsilentlydrophttpheaderswithunderscores (whichareperfectlyvalidaccordingtothehttpstandard )。 thisisdoneinordertopreventambiguitieswhenmappingheaderstocgivariables,asbothdashesandunderscoresaremappedtounderscorescoresduresduriesduriesduries

复制代码

因此,在以后使用header时,客户端和浏览器必须创建更规范的header名称,以尽量不使用加下划线的内容。

结语

以前开发周期很紧,除了认证和ua以外,很少关注header的内容,但这次整理后发现,我们现在的cs对话中有很多冗长的业务数据在header和接口上都传递,可以用它做更多的事情

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。