我正在使用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只发送一个“Set-Cookie”:
Set-Cookie ccc=333; path=/
我不确定我是否误解了什么。服务器可以一次发送多个“Set-Cookie”命令吗?以这种方式发送多个cookie是否正确?
答案 0 :(得分:2)
使用netty的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)
答案 1 :(得分:1)
我认为不,开箱即用是不可能的,因为存储在HashMap中的标题: https://github.com/purplefox/vert.x/blob/master/src/main/java/org/vertx/java/core/http/impl/DefaultHttpServerResponse.java#L81
你可以:
合并Cookie并手动处理,例如:
req.response.putHeader(“Set-Cookie”,“aaa = 111&amp; bbb = 222&amp; ccc = 333; path = /”)
答案 2 :(得分:0)
有一个工作环绕。
req.response()
.putHeader("Set-Cookie", "some=cookie;max-age=1000;path=/;HttpOnly"
+"\nSet-Cookie: next=cookie"
+"\nSet-Cookie: nnext=cookie;HttpOnly");