import { NextRequest, NextResponse } from 'next/server';
// GETメソッド:クエリパラメータの「url」に向けてリクエストを転送し、レスポンスにCORSヘッダーを追加して返す
export async function GET(request: NextRequest) {
// リクエストURLからクエリパラメータを抽出
const { searchParams } = new URL(request.url);
const targetUrl = searchParams.get('url');
// ターゲットのURLが指定されていなければエラーレスポンスを返す
if (!targetUrl) {
return new NextResponse(null, { status: 400 });
}
const response = await fetch(targetUrl);
response.headers.set('Access-Control-Allow-Origin', '*');
response.headers.set('Access-Control-Allow-Credentials', 'true');
return response;
}
// OPTIONSメソッド:プリフライトリクエストへの対応(必要なCORSヘッダーを返す)
export function OPTIONS() {
return new NextResponse(null, {
status: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, OPTIONS',
'Access-Control-Allow-Headers': '*',
},
});
}
import { NextRequest, NextResponse } from 'next/server';
// GETメソッド:クエリパラメータの「url」に向けてリクエストを転送し、レスポンスにCORSヘッダーを追加して返す
export async function GET(request: NextRequest) {
// リクエストURLからクエリパラメータを抽出
const { searchParams } = new URL(request.url);
const targetUrl = searchParams.get('url');
// ターゲットのURLが指定されていなければエラーレスポンスを返す
if (!targetUrl) {
return new NextResponse(null, { status: 400 });
}
const response = await fetch(targetUrl);
response.headers.set('Access-Control-Allow-Origin', '*');
response.headers.set('Access-Control-Allow-Credentials', 'true');
return response;
}
// OPTIONSメソッド:プリフライトリクエストへの対応(必要なCORSヘッダーを返す)
export function OPTIONS() {
return new NextResponse(null, {
status: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, OPTIONS',
'Access-Control-Allow-Headers': '*',
},
});
}