middleware helemt changes
This commit is contained in:
parent
aa6ba87f4e
commit
e6a8880fd3
@ -4,8 +4,8 @@ import (
|
|||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"gitserver.in/patialtech/mux"
|
"code.patial.tech/go/mux"
|
||||||
"gitserver.in/patialtech/mux/middleware"
|
"code.patial.tech/go/mux/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
4
go.mod
4
go.mod
@ -1,3 +1,3 @@
|
|||||||
module gitserver.in/patialtech/mux
|
module code.patial.tech/go/mux
|
||||||
|
|
||||||
go 1.23.2
|
go 1.24
|
||||||
|
@ -102,19 +102,16 @@ const (
|
|||||||
YearDuration = 365 * 24 * 60 * 60
|
YearDuration = 365 * 24 * 60 * 60
|
||||||
|
|
||||||
// EmbedderDefault default value will be "require-corp"
|
// EmbedderDefault default value will be "require-corp"
|
||||||
EmbedderDefault Embedder = ""
|
|
||||||
EmbedderRequireCorp Embedder = "require-corp"
|
EmbedderRequireCorp Embedder = "require-corp"
|
||||||
EmbedderCredentialLess Embedder = "credentialless"
|
EmbedderCredentialLess Embedder = "credentialless"
|
||||||
EmbedderUnsafeNone Embedder = "unsafe-none"
|
EmbedderUnsafeNone Embedder = "unsafe-none"
|
||||||
|
|
||||||
// OpenerDefault default value will be "same-origin"
|
// OpenerDefault default value will be "same-origin"
|
||||||
OpenerDefault Opener = ""
|
|
||||||
OpenerSameOrigin Opener = "same-origin"
|
OpenerSameOrigin Opener = "same-origin"
|
||||||
OpenerSameOriginAllowPopups Opener = "same-origin-allow-popups"
|
OpenerSameOriginAllowPopups Opener = "same-origin-allow-popups"
|
||||||
OpenerUnsafeNone Opener = "unsafe-none"
|
OpenerUnsafeNone Opener = "unsafe-none"
|
||||||
|
|
||||||
// ResourceDefault default value will be "same-origin"
|
// ResourceDefault default value will be "same-origin"
|
||||||
ResourceDefault Resource = ""
|
|
||||||
ResourceSameOrigin Resource = "same-origin"
|
ResourceSameOrigin Resource = "same-origin"
|
||||||
ResourceSameSite Resource = "same-site"
|
ResourceSameSite Resource = "same-site"
|
||||||
ResourceCrossOrigin Resource = "cross-origin"
|
ResourceCrossOrigin Resource = "cross-origin"
|
||||||
@ -129,14 +126,12 @@ const (
|
|||||||
UnsafeUrl Referrer = "unsafe-url"
|
UnsafeUrl Referrer = "unsafe-url"
|
||||||
|
|
||||||
// CDPDefault default value is "none"
|
// CDPDefault default value is "none"
|
||||||
CDPDefault CDP = ""
|
|
||||||
CDPNone CDP = "none"
|
CDPNone CDP = "none"
|
||||||
CDPMasterOnly CDP = "master-only"
|
CDPMasterOnly CDP = "master-only"
|
||||||
CDPByContentType CDP = "by-content-type"
|
CDPByContentType CDP = "by-content-type"
|
||||||
CDPAll CDP = "all"
|
CDPAll CDP = "all"
|
||||||
|
|
||||||
// XFrameDefault default value will be "sameorigin"
|
// XFrameDefault default value will be "sameorigin"
|
||||||
XFrameDefault XFrame = ""
|
|
||||||
XFrameSameOrigin XFrame = "sameorigin"
|
XFrameSameOrigin XFrame = "sameorigin"
|
||||||
XFrameDeny XFrame = "deny"
|
XFrameDeny XFrame = "deny"
|
||||||
)
|
)
|
||||||
@ -148,21 +143,21 @@ func Helmet(opt HelmetOption) func(http.Handler) http.Handler {
|
|||||||
w.Header().Add("Content-Security-Policy", opt.ContentSecurityPolicy.value())
|
w.Header().Add("Content-Security-Policy", opt.ContentSecurityPolicy.value())
|
||||||
|
|
||||||
// Cross-Origin-Embedder-Policy, if nil set default
|
// Cross-Origin-Embedder-Policy, if nil set default
|
||||||
if opt.CrossOriginEmbedderPolicy == EmbedderDefault {
|
if opt.CrossOriginEmbedderPolicy == "" {
|
||||||
w.Header().Add("Cross-Origin-Embedder-Policy", string(EmbedderRequireCorp))
|
w.Header().Add("Cross-Origin-Embedder-Policy", string(EmbedderRequireCorp))
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("Cross-Origin-Embedder-Policy", string(opt.CrossOriginEmbedderPolicy))
|
w.Header().Add("Cross-Origin-Embedder-Policy", string(opt.CrossOriginEmbedderPolicy))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cross-Origin-Opener-Policy, if nil set default
|
// Cross-Origin-Opener-Policy, if nil set default
|
||||||
if opt.CrossOriginOpenerPolicy == OpenerDefault {
|
if opt.CrossOriginOpenerPolicy == "" {
|
||||||
w.Header().Add("Cross-Origin-Opener-Policy", string(OpenerSameOrigin))
|
w.Header().Add("Cross-Origin-Opener-Policy", string(OpenerSameOrigin))
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("Cross-Origin-Opener-Policy", string(opt.CrossOriginOpenerPolicy))
|
w.Header().Add("Cross-Origin-Opener-Policy", string(opt.CrossOriginOpenerPolicy))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cross-Origin-Resource-Policy, if nil set default
|
// Cross-Origin-Resource-Policy, if nil set default
|
||||||
if opt.CrossOriginResourcePolicy == ResourceDefault {
|
if opt.CrossOriginResourcePolicy == "" {
|
||||||
w.Header().Add("Cross-Origin-Resource-Policy", string(ResourceSameOrigin))
|
w.Header().Add("Cross-Origin-Resource-Policy", string(ResourceSameOrigin))
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("Cross-Origin-Resource-Policy", string(opt.CrossOriginResourcePolicy))
|
w.Header().Add("Cross-Origin-Resource-Policy", string(opt.CrossOriginResourcePolicy))
|
||||||
@ -223,13 +218,13 @@ func Helmet(opt HelmetOption) func(http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// indicate whether a browser should be allowed to render a page in iframe | frame | embed | object
|
// indicate whether a browser should be allowed to render a page in iframe | frame | embed | object
|
||||||
if opt.XFrameOption == XFrameDefault {
|
if opt.XFrameOption == "" {
|
||||||
w.Header().Add("X-Frame-Options", string(XFrameSameOrigin))
|
w.Header().Add("X-Frame-Options", string(XFrameSameOrigin))
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("X-Frame-Options", string(opt.XFrameOption))
|
w.Header().Add("X-Frame-Options", string(opt.XFrameOption))
|
||||||
}
|
}
|
||||||
|
|
||||||
if opt.CrossDomainPolicies == CDPDefault {
|
if opt.CrossDomainPolicies == "" {
|
||||||
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(CDPNone))
|
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(CDPNone))
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(opt.CrossDomainPolicies))
|
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(opt.CrossDomainPolicies))
|
||||||
|
@ -6,13 +6,13 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitserver.in/patialtech/mux"
|
"code.patial.tech/go/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestHelmet(t *testing.T) {
|
func TestHelmet(t *testing.T) {
|
||||||
r := mux.NewRouter()
|
r := mux.NewRouter()
|
||||||
r.Use(Helmet(HelmetOption{}))
|
r.Use(Helmet(HelmetOption{}))
|
||||||
r.Get("/hello", func(writer http.ResponseWriter, request *http.Request) {
|
r.GET("/hello", func(writer http.ResponseWriter, request *http.Request) {
|
||||||
_, _ = writer.Write([]byte("hello there"))
|
_, _ = writer.Write([]byte("hello there"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user