SuzukiTakamasa / Casaparo

0 stars 0 forks source link

worker-rustにCORSの設定を行う #12

Closed SuzukiTakamasa closed 5 months ago

SuzukiTakamasa commented 6 months ago

現状全てのオリジンを許容してしまっているため、これをCloudflare PagesとLINE bot用のCloudflare Workerからのアクセスのみを許可するようにする

SuzukiTakamasa commented 6 months ago

追記: 開発用の環境では、APIの単体テストのしやすさを考慮して全てのオリジンを許可する設定とする

SuzukiTakamasa commented 6 months ago
use worker::*;

fn main(mut req: Request, env: Env, _ctx: Context) -> Result<Response> {
    // 許可するオリジンを取得
    let allowed_origins = vec![
        env.var("ALLOWED_ORIGIN_1")?.to_string(),
        env.var("ALLOWED_ORIGIN_2")?.to_string(),
        env.var("ALLOWED_ORIGIN_3")?.to_string(),
    ];

    // オリジンをカンマ区切りの文字列に変換
    let allowed_origins_str = allowed_origins.join(", ");

    let response = Response::ok("Hello World")?;
    let mut headers = response.headers().clone();

    // CORSヘッダーを設定
    headers.set("Access-Control-Allow-Origin", allowed_origins_str.parse()?)?;
    headers.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")?;
    headers.set("Access-Control-Allow-Headers", "Content-Type")?;

    Ok(response.with_headers(headers))
}
SuzukiTakamasa commented 5 months ago

複数のCORSの設定はできならしいので、対応しないこととして一旦クローズ