【问题标题】:How to handle cookies like a web browser using App Engine url fetch service?如何使用 App Engine url fetch 服务像网络浏览器一样处理 cookie?
【发布时间】:2012-11-28 00:25:06
【问题描述】:
我看到很多关于在 App Engine 上使用带有 url fetch 的 cookie 的问题,但很多人都做错了,并且在 Java App Engine 上没有确认为有效的解决方案。
我想做的就是:
- 提出一个请求
- 从该请求中获取 cookie。
- 使用这些 cookie 发出第二个请求。
有多难??
这在开发服务器上很容易做到,因为开发服务器会自动跨请求复制 cookie - 实际上不可能阻止它这样做。但真正的 App Engine urlfetch 服务不会这样做。
【问题讨论】:
标签:
java
google-app-engine
cookies
【解决方案1】:
使用
new HTTPRequest(url, HTTPMethod.GET, fetchOptions.doNotFollowRedirects())
创建请求对象。
doNotFollowRedirects() 出于某种原因必不可少。我不明白为什么。
然后从响应中获取 set-cookie 标头(名称为 equalsIgnoreCase("Set-Cookie") 的标头)并创建相应的 Cookie 标头 - 修剪每个 Set-Cookie 标头中分号后的所有内容(如果有的话),然后用;作为分隔符将所有cookie连接在一起。
这不能正确处理过期等问题,但这对于大多数用途来说应该足够了。