1
+ import {
2
+ bodyToBuffer ,
3
+ } from "https://cdn.jsdelivr.net/gh/masx200/[email protected] /mod.ts" ;
4
+ import { DenoMiddleWare } from "./DenoMiddleWare.ts" ;
1
5
/**
2
6
* 定义一个适用于Deno服务器中间件的类型。
3
7
*
@@ -147,7 +151,6 @@ export async function middlewareMain(
147
151
) ;
148
152
return resp ;
149
153
}
150
- import { DenoMiddleWare } from "./DenoMiddleWare.ts" ;
151
154
/**
152
155
* 主要中间件处理函数
153
156
*
@@ -224,9 +227,14 @@ export async function reverse_proxy(
224
227
export default async function (
225
228
...[ request , info , next ] : Parameters < DenoMiddleWare >
226
229
) : Promise < Response > {
230
+ if ( request . headers . get ( "upgrade" ) == "websocket" ) {
231
+ return await next ( ) ;
232
+ }
227
233
try {
228
- return await middlewareLogger ( request , info , async ( ) => {
229
- return await middlewareMain ( request , info , next ) ;
234
+ return await Strict_Transport_Security ( request , info , async ( ) => {
235
+ return await middlewareLogger ( request , info , async ( ) => {
236
+ return await middlewareMain ( request , info , next ) ;
237
+ } ) ;
230
238
} ) ;
231
239
} catch ( error ) {
232
240
console . error ( error ) ;
@@ -238,3 +246,21 @@ export default async function (
238
246
) ;
239
247
}
240
248
}
249
+ export async function Strict_Transport_Security (
250
+ ...[ _request , _info , next ] : Parameters < DenoMiddleWare >
251
+ ) : Promise < Response > {
252
+ // console.log(2);
253
+ const response = await next ( ) ;
254
+ const headers = new Headers ( response . headers ) ;
255
+
256
+ headers . set ( "Strict-Transport-Security" , "max-age=31536000" ) ;
257
+ // console.log(ctx.response.body);
258
+ // 必须把响应的主体转换为Uint8Array才行
259
+ const body = response . body && ( await bodyToBuffer ( response . body ) ) ;
260
+ // headers.delete("content-length");
261
+ const res = new Response ( body , {
262
+ status : response . status ,
263
+ headers,
264
+ } ) ;
265
+ return res ;
266
+ }
0 commit comments