HttpWebRequest 无法提交 cookie 的原因分析

症状

1, 使用 C# 向接口提交请求 , 但是接口无法获取到 cookie
C# 提交代码如下:

 string url = "http://localhost:8081/club/proxy";

 HttpWebRequest uploadRequest = (HttpWebRequest)System.Net.WebRequest.Create(url);


  uploadRequest.CookieContainer = new CookieContainer();
 var myCookie = new Cookie("aaa", "bbbb", "/", "myonlineaaaaaabb.com.cn");
  uploadRequest.CookieContainer.Add(ck);
 

接口端 java 代码

       @RequestMapping(value = "/{appName}/proxy/**")
 public void proxy(HttpServletRequest request, HttpServletResponse response, @PathVariable(value = "appName", required = true) String appName) throws IOException, URISyntaxException {

     Cookie[] cookies = request.getCookies();


分析

wireshark 抓包,的确没有发送 , 问题是出在 C# 提交一端。

img

翻代码

img

img

原来在 CookieContainer.Add 的过程中就先验证了 cookie的 domain 与 url 的一致性

解决

1, 修改 url 与 domain 使用一致的 host

2 , 写 header 头 ,uploadRequest.Headers["Cookie"] = "cookieKey=cookieValue"

posted @ 2023-04-25 13:17  张保维  阅读(58)  评论(0编辑  收藏  举报