mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-22 18:25:47 +08:00
Add isHostIntranet to CORS filter
This commit is contained in:
parent
2fd2d88d20
commit
e3558894c3
@ -16,7 +16,9 @@ package routers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/beego/beego/context"
|
"github.com/beego/beego/context"
|
||||||
@ -154,3 +156,31 @@ func parseBearerToken(ctx *context.Context) string {
|
|||||||
|
|
||||||
return tokens[1]
|
return tokens[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getHostname(s string) string {
|
||||||
|
if s == "" {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := url.Parse(s)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
res := l.Hostname()
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func isHostIntranet(s string) bool {
|
||||||
|
ipStr, _, err := net.SplitHostPort(s)
|
||||||
|
if err != nil {
|
||||||
|
ipStr = s
|
||||||
|
}
|
||||||
|
|
||||||
|
ip := net.ParseIP(ipStr)
|
||||||
|
if ip == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return ip.IsPrivate()
|
||||||
|
}
|
||||||
|
@ -16,7 +16,6 @@ package routers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/beego/beego/context"
|
"github.com/beego/beego/context"
|
||||||
@ -41,20 +40,6 @@ func setCorsHeaders(ctx *context.Context, origin string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHostname(s string) string {
|
|
||||||
if s == "" {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
l, err := url.Parse(s)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
res := l.Hostname()
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func CorsFilter(ctx *context.Context) {
|
func CorsFilter(ctx *context.Context) {
|
||||||
origin := ctx.Input.Header(headerOrigin)
|
origin := ctx.Input.Header(headerOrigin)
|
||||||
originConf := conf.GetConfigString("origin")
|
originConf := conf.GetConfigString("origin")
|
||||||
@ -81,6 +66,8 @@ func CorsFilter(ctx *context.Context) {
|
|||||||
setCorsHeaders(ctx, origin)
|
setCorsHeaders(ctx, origin)
|
||||||
} else if originHostname == host {
|
} else if originHostname == host {
|
||||||
setCorsHeaders(ctx, origin)
|
setCorsHeaders(ctx, origin)
|
||||||
|
} else if isHostIntranet(host) {
|
||||||
|
setCorsHeaders(ctx, origin)
|
||||||
} else {
|
} else {
|
||||||
ok, err := object.IsOriginAllowed(origin)
|
ok, err := object.IsOriginAllowed(origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user