Merge pull request #4551 from gkrizek/cors
lnd: Add CORS support to the WalletUnlocker proxy
This commit is contained in:
commit
fac3c84806
2
lnd.go
2
lnd.go
@ -1012,7 +1012,7 @@ func waitForWalletPassword(cfg *Config, restEndpoints []net.Addr,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
srv := &http.Server{Handler: mux}
|
srv := &http.Server{Handler: allowCORS(mux, cfg.RestCORS)}
|
||||||
|
|
||||||
for _, restEndpoint := range restEndpoints {
|
for _, restEndpoint := range restEndpoints {
|
||||||
lis, err := lncfg.TLSListenOnAddress(restEndpoint, tlsConf)
|
lis, err := lncfg.TLSListenOnAddress(restEndpoint, tlsConf)
|
||||||
|
15
rpcserver.go
15
rpcserver.go
@ -833,12 +833,6 @@ func (r *rpcServer) Start() error {
|
|||||||
// Wrap the default grpc-gateway handler with the WebSocket handler.
|
// Wrap the default grpc-gateway handler with the WebSocket handler.
|
||||||
restHandler := lnrpc.NewWebSocketProxy(restMux, rpcsLog)
|
restHandler := lnrpc.NewWebSocketProxy(restMux, rpcsLog)
|
||||||
|
|
||||||
// Set the CORS headers if configured. This wraps the HTTP handler with
|
|
||||||
// another handler.
|
|
||||||
if len(r.cfg.RestCORS) > 0 {
|
|
||||||
restHandler = allowCORS(restHandler, r.cfg.RestCORS)
|
|
||||||
}
|
|
||||||
|
|
||||||
// With our custom REST proxy mux created, register our main RPC and
|
// With our custom REST proxy mux created, register our main RPC and
|
||||||
// give all subservers a chance to register as well.
|
// give all subservers a chance to register as well.
|
||||||
err := lnrpc.RegisterLightningHandlerFromEndpoint(
|
err := lnrpc.RegisterLightningHandlerFromEndpoint(
|
||||||
@ -894,7 +888,8 @@ func (r *rpcServer) Start() error {
|
|||||||
// through the following chain:
|
// through the following chain:
|
||||||
// req ---> CORS handler --> WS proxy --->
|
// req ---> CORS handler --> WS proxy --->
|
||||||
// REST proxy --> gRPC endpoint
|
// REST proxy --> gRPC endpoint
|
||||||
err := http.Serve(lis, restHandler)
|
corsHandler := allowCORS(restHandler, r.cfg.RestCORS)
|
||||||
|
err := http.Serve(lis, corsHandler)
|
||||||
if err != nil && !lnrpc.IsClosedConnError(err) {
|
if err != nil && !lnrpc.IsClosedConnError(err) {
|
||||||
rpcsLog.Error(err)
|
rpcsLog.Error(err)
|
||||||
}
|
}
|
||||||
@ -969,6 +964,12 @@ func allowCORS(handler http.Handler, origins []string) http.Handler {
|
|||||||
allowMethods := "Access-Control-Allow-Methods"
|
allowMethods := "Access-Control-Allow-Methods"
|
||||||
allowOrigin := "Access-Control-Allow-Origin"
|
allowOrigin := "Access-Control-Allow-Origin"
|
||||||
|
|
||||||
|
// If the user didn't supply any origins that means CORS is disabled
|
||||||
|
// and we should return the original handler.
|
||||||
|
if len(origins) == 0 {
|
||||||
|
return handler
|
||||||
|
}
|
||||||
|
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
origin := r.Header.Get("Origin")
|
origin := r.Header.Get("Origin")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user