* Second attept at patching api/websocket.go for CORS support.

* Missing include

* Fixed whitespace formatting so that gofmt passes.

* Added tests for CORS filtering
Этот коммит содержится в:
Brad Howes
2017-03-23 14:10:52 +01:00
коммит произвёл Christopher Speller
родитель 34cb70d005
Коммит 120f5a6f8a
2 изменённых файлов: 46 добавлений и 1 удалений

Просмотреть файл

@@ -5,6 +5,7 @@ package api
import (
"net/http"
"strings"
l4g "github.com/alecthomas/log4go"
"github.com/gorilla/websocket"
@@ -19,11 +20,25 @@ func InitWebSocket() {
app.HubStart()
}
type OriginCheckerProc func(*http.Request) bool
func OriginChecker(r *http.Request) bool {
origin := r.Header.Get("Origin")
return *utils.Cfg.ServiceSettings.AllowCorsFrom == "*" || strings.Contains(origin, *utils.Cfg.ServiceSettings.AllowCorsFrom)
}
func connect(c *Context, w http.ResponseWriter, r *http.Request) {
var originChecker OriginCheckerProc = nil
if len(*utils.Cfg.ServiceSettings.AllowCorsFrom) > 0 {
originChecker = OriginChecker
}
upgrader := websocket.Upgrader{
ReadBufferSize: model.SOCKET_MAX_MESSAGE_SIZE_KB,
WriteBufferSize: model.SOCKET_MAX_MESSAGE_SIZE_KB,
CheckOrigin: nil,
CheckOrigin: originChecker,
}
ws, err := upgrader.Upgrade(w, r, nil)