为什么 http 组件 HttpClient 会从 Cookie 值中删除引号?
Why does http components HttpClient remove quotes from Cookie values?
我有一个应用程序使用 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
它删除了引号。
这是为什么?我必须使用 HttpRequestInterceptor
将我的引号添加回 cookie 值,以便请求 3 不会失败。有什么方法可以让它停止删除那些引号吗?
curl
没有相同的行为。
已从此处的值中删除周围的引号:
从外观上看,您可以用撇号将引用的值括起来。在发出重定向请求之前,遍历所有 cookie 以查找 J-Login-Cookie
并将值从 "a8966ab6c6d65a7d6a"
更改为 '"a8966ab6c6d65a7d6a"'
以便仅删除外部撇号。
这与使用拦截器基本相同。您唯一的其他选择是使用不同的 HTTP 客户端库。
有相反的行为。
我还发现 an explanation 为什么 Apache HTTP 客户端的行为是正确的(除了 RFC 本身)
HTTP State Management Mechanism RFC
更新:
Apache HTTP 客户端 cookie 的来源parser, and some tests。链接指向 master
分支,可根据需要自由填写以调整分支和提交版本。
我有一个应用程序使用 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
它删除了引号。
这是为什么?我必须使用 HttpRequestInterceptor
将我的引号添加回 cookie 值,以便请求 3 不会失败。有什么方法可以让它停止删除那些引号吗?
curl
没有相同的行为。
已从此处的值中删除周围的引号:
从外观上看,您可以用撇号将引用的值括起来。在发出重定向请求之前,遍历所有 cookie 以查找 J-Login-Cookie
并将值从 "a8966ab6c6d65a7d6a"
更改为 '"a8966ab6c6d65a7d6a"'
以便仅删除外部撇号。
这与使用拦截器基本相同。您唯一的其他选择是使用不同的 HTTP 客户端库。
有
我还发现 an explanation 为什么 Apache HTTP 客户端的行为是正确的(除了 RFC 本身)
HTTP State Management Mechanism RFC
更新:
Apache HTTP 客户端 cookie 的来源parser, and some tests。链接指向 master
分支,可根据需要自由填写以调整分支和提交版本。