以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  headers中增加cookie键值对  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=179996)

--  作者:rxbdchrx
--  发布时间:2022/9/22 11:50:00
--  headers中增加cookie键值对
以下程序测试headers中增加cookie键值对,在服务器项目中发现请求的headers中没有cookie键值对
Dim mystring As String
Dim mycookie As String = "ddjdjjjdjd" 
Dim hctest As New HttpClient("http://157.116.12.172:32188/Web_api" )
hctest.C
hctest.Headers.Add("cookie",mycookie)
Dim jotest As New JObject
jotest("jsonrpc") = "2.0"
output.Show( jotest.Tostring )
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12
hctest.Content = jotest.Tostring
mystring = hctest.GetData()
output.Show( mystring )

但是如果把程序修改如下(把键值对的键名改为mycookie),测试OK
Dim mystring As String
Dim mycookie As String = "ddjdjjjdjd" 
Dim hctest As New HttpClient("http://157.116.12.172:32188/Web_api" )
hctest.C
hctest.Headers.Add("mycookie",mycookie)
Dim jotest As New JObject
jotest("jsonrpc") = "2.0"
output.Show( jotest.Tostring )
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12
hctest.Content = jotest.Tostring
mystring = hctest.GetData()
output.Show( mystring )

请教专家,如果一定要增加键名为cookie的键值对,有什么办法。
[此贴子已经被作者于2022/9/22 11:53:50编辑过]

--  作者:有点蓝
--  发布时间:2022/9/22 11:53:00
--  
http://www.foxtable.com/mobilehelp/topics/0158.htm
--  作者:rxbdchrx
--  发布时间:2022/9/22 13:09:00
--  
再请教老师cookie中如何包含特殊字符?
--  作者:有点蓝
--  发布时间:2022/9/22 13:28:00
--  
html编码后在放入cookie::http://www.foxtable.com/mobilehelp/topics/0241.htm
--  作者:rxbdchrx
--  发布时间:2022/9/22 15:35:00
--  编码后也不行
Dim mystring As String
Dim mycookie As String = "bGxqZ2wuZA3ZFxlv7pwEa3OvCTKAdA==" 
Dim hctest As New HttpClient("http://157.116.12.172:32188/Web_api" )
hctest.C
Dim jotest As New JObject
jotest("jsonrpc") = "2.0"
hctest.sCookies.Add("Session-Id",UrlEncode(mycookie))
hctest.Content = jotest.Tostring
mystring = hctest.GetData()

运行以上程序后
服务器端cookies如下
Session-Id:bGxqZ2wuZA3ZFxlv7pwEa3OvCTKAdA%3d%3d
服务器端headers如下
Cookie:Session-Id=bGxqZ2wuZA3ZFxlv7pwEa3OvCTKAdA%253d%253d

如果不编码直接放入sCookies
hctest.sCookies.Add("Session-Id",UrlEncode(mycookie))      ----》         hctest.sCookies.Add("Session-Id",mycookie)

服务器端cookies如下
Session-Id:bGxqZ2wuZA3ZFxlv7pwEa3OvCTKAdA==
服务器端headers如下
Cookie:Session-Id=bGxqZ2wuZA3ZFxlv7pwEa3OvCTKAdA%3d%3d

请教老师如何才能做到   服务器端cookies  服务器端headers  都正常?

--  作者:有点蓝
--  发布时间:2022/9/22 15:38:00
--  
11
[此贴子已经被作者于2022/9/22 15:39:51编辑过]

--  作者:有点蓝
--  发布时间:2022/9/22 15:43:00
--  
那么就不要编码了。服务器端headers取值的时候进行一次解码。正常来说直接取cookie即可,不需要取服务器端headers里的cookie
--  作者:rxbdchrx
--  发布时间:2022/9/22 15:46:00
--  
关键是服务器端接口是固定死的:不是直接取cookie,而是取服务器端headers里的cookie
--  作者:有点蓝
--  发布时间:2022/9/22 16:02:00
--  
服务器端headers是自己加解码的,如果取不到:

要么存入的数据不符合规范,如果做接口,加密的数据正常都会进行base64编码,以防出现"=="这种需要加解码的情况
要么就是服务端的设计有问题,没有进行正确的解码