2016-03-18 11 views
6

Volevo inviare una richiesta websocket stretta di mano da una pagina HTML e ha scritto i codici come di seguito:Perché non riesco a vedere il valore del cookie in un'intestazione di richiesta di handshake WebSocket?

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

Ma quello mostrato in Chrome Dev Tools sembra che nessun cookie è stato inviato:

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 

Come può Ho risolto questo? Perché non ci sono cookie nelle intestazioni delle richieste? Se invio altre richieste ajax non aggiornate, posso vedere i cookie in Dev Tools. Perché ci sono tali differenze?

risposta

0

Si può provare

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

tuo Origine intestazione è http: // localhost: 63342 e la richiesta è quella di WS WS: // localhost: 5000/WS così i domini sono diverso (diverse porte). Immagino che le altre richieste ajax siano a http: // localhost: 63342 e quindi il browser invia il cookie.

Problemi correlati