使用RequestBuilder而不发送cookie

时间:2015-02-06 17:14:46

标签: rest gwt cookies xmlhttprequest

假设我在大型网站上有一个gwt应用程序,它设置了很多cookie,并且我无法控制哪些cookie被设置。进一步假设我的gwt应用程序使用RequestBuilder对同一域内的轻量级API(实际上必须这样做)进行大量REST调用。

RequestBuilder合理地向服务器发出HTTP请求,并发送它收到的所有cookie。这个问题是cookie本身有时会占用请求大小的90%。

是的,如果网站没有设置这么多的cookie会很好,但是假设这是不可修复的。不,从浏览器中删除cookie不是一个选项(如果它们完全无法访问gwt应用程序,那就没关系,例如,如果我能以某种方式说服gwt应用程序使用单独的空cookie罐)。

如何说服RequestBuilder 发送任何Cookie?

注意为XmlHttpRequest解决此问题并将其包装在GWT代码中会没问题。


我发现可能有用的东西(一般用于JS而不用于GWT,但GWT最终使用XmlHttpRequest):

  • Cookie Monster:在发送请求之前窃取XmlHttpRequest的Cookie的观察者。我认为这可能是Firefox特有的,看起来有点像辛苦工作。
  • yourXMLHttpReq.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS;:这将是非常完美的,除非它需要手术才能进入GWT并且我认为它特定于Firefox。
  • question,用于处理Chrome扩展程序,其答案是删除并读取所有Cookie(对于长时间运行的应用程序无效),或使用隐身窗口(我想要此只影响REST API调用。)。

1 个答案:

答案 0 :(得分:2)

RequestBuilder代表Javascript' XMLHttpRequest,它将始终发送Cookie。你有两个选择。

  1. 为您的REST端点使用不同的子域,而
  2. 尚未设置Cookie
  3. 在请求期间暂时删除所有Cookie,然后将其还原