2016-03-18 9 views
6

Ich wollte eine websocket Handshake-Anforderung von einer HTML-Seite senden und Codes geschrieben wie unten:Warum kann ich in einem WebSocket-Handshake-Anfrage-Header keinen Cookie-Wert sehen?

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

Aber was in Chrome Dev-Tool erscheint gezeigt, dass kein Cookie gesendet wurde:

kann
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 

Wie Ich repariere das? Warum gibt es keinen Cookie in Anforderungsheadern? Wenn ich eine andere Ajax-Anfrage, die nicht aktualisiert wurde, sende, kann ich Cookies in Dev Tools sehen. Warum gibt es solche Unterschiede?

Antwort

0

können Sie versuchen,

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

Ihre Herkunft Header http: // localhost: 63342 und die WS Anfrage ist zu ws: // localhost: 5000/ws so Ihre Domains sind verschieden (verschiedene Ports). Ich stelle mir vor, Ihre anderen Ajax-Anfragen sind http: // localhost: 63342 und damit der Browser sendet das Cookie.

Verwandte Themen