cookies - 为什么 http 组件 HttpClient 会从 Cookie 值中删除引号?
问题描述
我有一个使用https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore 4.4.7 进行休息 api 调用的应用程序。
我有一种情况,我要针对安全的 Web 应用程序创建 API:
HTTP GET 请求 1:https ://myapp.com/api/myrestrequest
它发现我缺少一个 JESSIONID cookie,因此它通过 302 将我发送到另一个页面以获取一个:
302 GET 请求 2:https ://myapp.com/sso/dologin?referer=/api/myrestrequest
此页面读取我的 SSO 会话 cookie,然后将我发送回原始请求:
HTTP GET 请求 3:https ://myapp.com/api/myrestrequest
很简单,很正常。但是在 GET 请求 2 期间,创建了一个特殊的 cookie,如下所示:
J-Login-Cookie="a8966ab6c6d65a7d6a"
但是当 HTTP 客户端将此 cookie 保存到 cookie 存储时,它会像这样保存它:
J-Login-Cookie=a8966ab6c6d65a7d6a
它删除引号。
这是为什么?我必须使用 anHttpRequestInterceptor
将我的引号添加回 cookie 值,以便请求 3 不会失败。有没有办法让它停止删除这些引号?
curl
没有这种相同的行为。
解决方案
周围的引号从此处的值中删除:
从外观上看,您可以用撇号将引用的值括起来。在发出重定向请求之前,遍历所有要查找的 cookieJ-Login-Cookie
并将值从 更改为"a8966ab6c6d65a7d6a"
,'"a8966ab6c6d65a7d6a"'
以便仅删除外部撇号。
这与使用拦截器基本相同。您唯一的其他选择是使用不同的 HTTP 客户端库。
推荐阅读
- python - 试图在python中绘制决策树
- python-3.x - 如何从位于表中的目录中的跨度中获取文本?
- python - 获取 yaml 文件中的字典名称
- python - 如何使用 numpy 的 np.linalg.solve 来解决确定的最小二乘系统?
- css - 如何垂直对齐父 div 的 ap 子项,以便轻松地对子项进行文本对齐?
- pine-script - 如何在 pine 脚本中获取关闭数据子集的 stdev
- proxy - pyppeteer-install 在代理后面
- html - html页面Bootstrap顶部的白条
- pine-script - Pine Script Strategy - 当前蜡烛图的价格与前一根蜡烛图开盘时如何触发入场?
- haskell - "(<$>)" 在 Haskell 中有什么作用?