2016-01-13 41 views
0

我只能通過Mule ESB在請求的響應中添加1個cookie。但是,當我嘗試添加超過1個Cookie時,使用屬性「Set-Cookie」,Mule會覆蓋第一個cookie並返回第二個cookie。如何在Mule上添加1個以上的cookie?

例如,在下面的代碼片段中,我在消息屬性(這是一張地圖)上添加了2個cookie。

`String msg = "SSID=123;domain=localhost;Path=/"; 
String msg2 = "SSAPID=456;domain=localhost;Path=/"; 
message.setProperty(HttpHeaders.Names.SET_COOKIE,msg, PropertyScope.OUTBOUND); 
message.setProperty(HttpHeaders.Names.SET_COOKIE,msg2, PropertyScope.OUTBOUND); 
` 

當我逮住了迴應,只有一個餅乾:

Message properties: 
    OUTBOUND scoped properties: 
    Set-Cookie=SAPID=456 
    access-control-allow-credentials=true 
    access-control-allow-headers=Origin, X-Requested-With, Content-Type, Accept, Cache, X-Auth-Token 
    access-control-allow-methods=PATCH, PUT, POST, GET, OPTIONS, DELETE 
    access-control-allow-origin=* 
    access-control-max-age=10 
    cache-control=no-store 
    content-encoding=gzip 
    content-type=application/json;charset=UTF-8 
    date=Wed, 13 Jan 2016 12:26:58 GMT 
    http.reason=OK 
    http.status=200 
    pragma=no-cache 
    server=Apache-Coyote/1.1 
    transfer-encoding=chunked 
    vary=[Accept-Encoding, Accept-Encoding] 
    x-content-type-options=nosniff 
    x-xss-protections=1; mode=block 
    SESSION scoped properties: 

的Set-Cookie = SAPID = 456

正如你所看到的,只有第二個cookie是請求返回。

我該如何實現我想要做的事情,因爲在此描述的cookie的規範https://tools.ietf.org/html/rfc6265#section-3.1說我可以在響應頭上返回多於1個Set-Cookie。

服務器可以通過返回2 的Set-Cookie頭字段

+0

哪個版本的騾子您使用的是? HTTP傳輸(入站/出站)還是連接器(監聽器/請求)? – afelisatti

回答

5

如果設置了相同的屬性兩次它只是覆蓋它爲用戶的首選語言存儲會話 標識爲好。相反,添加屬性一次,但其值設置爲一個列表:

List<String> cookies = new ArrayList<String>(); 
cookies.add(msg1); 
cookies.add(msg2); 

message.setProperty(HttpHeaders.Names.SET_COOKIE,cookies, PropertyScope.OUTBOUND); 

返回:

curl http://localhost:8087/test -i 
HTTP/1.1 200 
Content-Length: 3 
Set-Cookie: SSAPID=456;domain=localhost;Path=/ 
Set-Cookie: SSID=123;domain=localhost;Path=/ 
Date: Wed, 13 Jan 2016 15:09:54 GMT 
相關問題