2012-06-20 148 views
0

我正在使用vert.x來編寫應用程序。它還沒有內置的cookie支持,我們必須使用「putHeader()」方法手動設置cookie。如何將多個Cookie從服務器端寫入瀏覽器?

現在我要定了幾塊餅乾,所以我寫:

req.response.putHeader("Set-Cookie", "aaa=111; path=/") 
req.response.putHeader("Set-Cookie", "bbb=222; path=/") 
req.response.putHeader("Set-Cookie", "ccc=333; path=/") 

,但我發現vert.x只發送一個 「設置Cookie」:

Set-Cookie ccc=333; path=/ 

我不知道如果我誤解了一些東西。服務器可以一次發送多個「Set-Cookie」命令嗎?以這種方式發送多個Cookie是否正確?

回答

1

我覺得沒什麼,這是不可能的開箱即用,因爲存儲在一個HashMap標題: https://github.com/purplefox/vert.x/blob/master/src/main/java/org/vertx/java/core/http/impl/DefaultHttpServerResponse.java#L81

您可以:

  • 打開新的問題
  • 評論現有問題https://github.com/purplefox/vert.x/issues/89
  • 結帳來源和使用地圖什麼允許重複鍵 Map implementation with duplicate keys(你需要手動處理重複,例如Location-header應該只有一個時間
  • 擴展DefaultHttpServerResponse,看你如何整合它
  • 合併餅乾和手動處理它,比如:

    req.response.putHeader(「設置Cookie」,「AAA = 111 & bbb = 222 & ccc = 333;路徑= /「)

1

使用網狀的io.netty.handler.codec.http.ServerCookieEncoder功能:

req.response.putHeader("Set-Cookie", 
     ServerCookieEncoder.encode(new DefaultCookie("aaa", "111"))) 

那裏是許多有用的方法簽名:

ServerCookieEncoder.encode(Cookie cookie) 
ServerCookieEncoder.encode(Cookie... cookies) 
ServerCookieEncoder.encode(Collection<Cookie> cookies) 
ServerCookieEncoder.encode(Iterable<Cookie> cookies) 
0

有一個工作,以防萬一

req.response() 
.putHeader("Set-Cookie", "some=cookie;max-age=1000;path=/;HttpOnly" 
    +"\nSet-Cookie: next=cookie" 
    +"\nSet-Cookie: nnext=cookie;HttpOnly"); 
相關問題