From 77950e48c76f4a3b29d01831d43039caba29888a Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期二, 18 十一月 2025 14:12:42 +0800
Subject: [PATCH] 修改
---
middleware.ts | 28 +++++++++-------------------
1 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/middleware.ts b/middleware.ts
index ac01694..e0f8f37 100644
--- a/middleware.ts
+++ b/middleware.ts
@@ -3,26 +3,10 @@
const NECESSARY_DOMAIN = '*.sentry.io http://localhost:* http://127.0.0.1:* https://analytics.google.com googletagmanager.com *.googletagmanager.com https://www.google-analytics.com https://api.github.com'
-const wrapResponseWithXFrameOptions = (response: NextResponse, pathname: string) => {
- // prevent clickjacking: https://owasp.org/www-community/attacks/Clickjacking
- // Chatbot page should be allowed to be embedded in iframe. It's a feature
- if (process.env.NEXT_PUBLIC_ALLOW_EMBED !== 'true' && !pathname.startsWith('/chat') && !pathname.startsWith('/workflow') && !pathname.startsWith('/completion'))
- response.headers.set('X-Frame-Options', 'DENY')
-
- return response
-}
export function middleware(request: NextRequest) {
- const { pathname } = request.nextUrl
- const requestHeaders = new Headers(request.headers)
- const response = NextResponse.next({
- request: {
- headers: requestHeaders,
- },
- })
-
const isWhiteListEnabled = !!process.env.NEXT_PUBLIC_CSP_WHITELIST && process.env.NODE_ENV === 'production'
if (!isWhiteListEnabled)
- return wrapResponseWithXFrameOptions(response, pathname)
+ return NextResponse.next()
const whiteList = `${process.env.NEXT_PUBLIC_CSP_WHITELIST} ${NECESSARY_DOMAIN}`
const nonce = Buffer.from(crypto.randomUUID()).toString('base64')
@@ -37,7 +21,7 @@
style-src 'self' 'unsafe-inline' ${scheme_source} ${whiteList};
worker-src 'self' ${scheme_source} ${csp} ${whiteList};
media-src 'self' ${scheme_source} ${csp} ${whiteList};
- img-src * data:;
+ img-src 'self' ${scheme_source} ${csp} ${whiteList};
font-src 'self';
object-src 'none';
base-uri 'self';
@@ -49,6 +33,7 @@
.replace(/\s{2,}/g, ' ')
.trim()
+ const requestHeaders = new Headers(request.headers)
requestHeaders.set('x-nonce', nonce)
requestHeaders.set(
@@ -56,12 +41,17 @@
contentSecurityPolicyHeaderValue,
)
+ const response = NextResponse.next({
+ request: {
+ headers: requestHeaders,
+ },
+ })
response.headers.set(
'Content-Security-Policy',
contentSecurityPolicyHeaderValue,
)
- return wrapResponseWithXFrameOptions(response, pathname)
+ return response
}
export const config = {
--
Gitblit v1.8.0