用nginx实现不同Cookie的适配
1. 背景
用Java语言开发的Web应用,其Session所使用的Cookie名称一般是JSESSIONID。
用PHP语言开发的Web应用,其Session所使用的Cookie名称一般是PHPSESSID,当然,这个可以改。
因特殊原因,需要由Java的Cookie转PHP的Cookie,以便不用更改APP端的代码,也不更改服务端的代码。
2. 关键知识点(针对 nginx):
$cookie_name是 请求中名称为name的Cookie的值
如:Cookie: PHPSESSID=123456
则
nginx配置文件中$cookie_PHPSESSID的值为1234546。$http_cookie是请求头Cookie的全部内容
如:Cookie: PHPSESSID=123456
则
nginx配置文件中$http_cookie的值为PHPSESSID=123456。more_headers模块的more_set_input_headers指令可以设置请求头字符串中可以嵌入
nginx变量
如:
if ($arg_cid) {
more_set_input_headers "Cookie: PHPSESSID=$arg_cid";
}3. 实现
可以在nginx配置文件中使用如下代码:
if ($cookie_JSESSIONID) {
more_set_input_headers "Cookie: PHPSESSID=$cookie_JSESSIONID; $http_cookie";
}
反过来,也可以由PHP的Cookie转Java的Cookie。
if ($cookie_PHPSESSID) {
more_set_input_headers "Cookie: JSESSIONID=$cookie_PHPSESSID; $http_cookie";
}用Postman测试:
请求头只传了JSESSIONID=123456,服务器端返回的Cookie,增加了PHPSESSID的内容,与JSESSIONID的值一样。
版权声明:本文为chunyuan314原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。