2016-05-07 10 views
1

websocketハンドシェイク中にUpgradeレスポンスにSet-Cookieを追加するにはどうすればよいですか? websocketハンドシェイクのセットクッキー

私はハンドシェイクが成功したが、全くSet-Cookie HTTPヘッダーが応答に存在しない次のコードを

import (
    //"encoding/json" 
    "golang.org/x/net/websocket" 
    //"io" 
    "log" 
    "net/http" 
) 

func main() { 

    http.HandleFunc("/v2", onV2Handshake) 

    // Ports below 1024 can be opened only by root. 
    err := http.ListenAndServe(":8080", nil) 
    // err := http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil) 
    if err != nil { 
     log.Panicln(err) 
    } 
} 

func EchoServer(ws *websocket.Conn) { 
    //io.Copy(ws, ws) 
} 

func onV2Handshake(writer http.ResponseWriter, req *http.Request) { 
    cookie := http.Cookie{Name: "_c_id_", Value: "abcd", Path: "/", HttpOnly: true, Secure: false} 
    http.SetCookie(writer, &cookie) 

    server := websocket.Server{Handler: websocket.Handler(EchoServer)} 
    server.ServeHTTP(writer, req) 
} 

を試みました。

Connection:Upgrade 
Sec-WebSocket-Accept:wWtU5pygFsiY0aTzMRzJEQcgnZc= 
Sec-WebSocket-Protocol:wamp.2.json 
Upgrade:websocket 

RFC6455によると、これは、そのような私がNodeJSでこの問題を持っていないクッキー

として、

追加のヘッダフィールドが存在してもよい動作するはずです。

答えて

0
cookie := http.Cookie{Name: "_c_id_", Value: "abcd", Path: "/", HttpOnly: true, Secure: false} 

server := websocket.Server{Handler: websocket.Handler(EchoServer)} 
server.Config.Header = make(map[string][]string) 
server.Config.Header.Set("Set-Cookie", cookie.String()) 
server.ServeHTTP(writer, req) 
関連する問題