File size: 1,084 Bytes
7fc5208
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * CORS 相关的响应头配置
 */
export const CORS_HEADERS = {
    'Access-Control-Allow-Origin': '*',  // 允许所有来源
    'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',  // 允许的HTTP方法
    'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',  // 允许的请求头
    'Access-Control-Max-Age': '86400',  // 预检请求的有效期
};

/**
 * 处理 OPTIONS 预检请求
 */
export function handleOptions(): Response {
    return new Response(null, {
        status: 204,
        headers: CORS_HEADERS
    });
}

/**
 * 为响应添加 CORS 头
 * @param response 原始响应对象
 * @returns 添加了 CORS 头的新响应对象
 */
export function addCorsHeaders(response: Response): Response {
    const newHeaders = new Headers(response.headers);
    Object.entries(CORS_HEADERS).forEach(([key, value]) => {
        newHeaders.set(key, value);
    });

    return new Response(response.body, {
        status: response.status,
        statusText: response.statusText,
        headers: newHeaders
    });
}