2016-03-18 20 views
6

Chciałem wysłać żądanie websocket handshake ze strony HTML i napisał kod jak poniżej:Dlaczego nie widzę wartości cookie w nagłówku żądania uzgadniania WebSocket?

document.cookie = "guestId=xxxx; remember=xxxxxx;"; 
    var ws = new WebSocket("ws://localhost:5000/ws"); 

Ale co pokazano w Chrome Dev Narzędzia wydaje się, że bez cookies został wysłany:

General: 
    Request URL:ws://localhost:5000/ws 
    Request Method:GET 
    Status Code:307 Temporary Redirect 
Response Headers 
    Content-Length:59 
    Content-Type:text/html; charset=utf-8 
    Date:Fri, 18 Mar 2016 09:39:11 GMT 
    Location:/preorder/landing/index 
Request Headers 
    Accept-Encoding:gzip, deflate, sdch 
    Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4 
    Cache-Control:no-cache 
    Connection:Upgrade 
    Host:localhost:5000 
    Origin:http://localhost:63342 
    Pragma:no-cache 
    Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits 
    Sec-WebSocket-Key:t3N0vVaLCsOmOXLSh+Arsw== 
    Sec-WebSocket-Version:13 
    Upgrade:websocket 
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 

Jak można Naprawię to? Dlaczego w nagłówkach wniosków nie ma pliku cookie? Jeśli wyślę inne żądanie ajaxowe, które nie zostało zaktualizowane, mogę zobaczyć pliki cookie w Dev Tools. Dlaczego istnieją takie różnice?

Odpowiedz

0

Można spróbować

ws.on("headers", function(headers) { 
    headers["set-cookie"] = "yokokkie"; 
}); 
1

Twój Origin nagłówek jest http: // localhost: 63342 a wniosek WS jest WS: // localhost: 5000/WS więc swoje domeny są różne (różne porty). Wyobrażam sobie, że twoje inne żądania ajaxowe są http: // localhost: 63342, a zatem przeglądarka wysyła plik cookie.