コンテンツへスキップ
🛠️ToolsShed

CORSポリシーテスター

シミュレートされたブラウザシナリオでCORS設定をテストし、デバッグします。

複数のオリジンはカンマで区切ります。* を使用すると任意のオリジンが許可されます(ただし認証情報と一緒には使用できません)

このツールについて

CORS(Cross-Origin Resource Sharing)はブラウザが異なるドメイン間のリクエストを処理する方法を制御する重要なウェブセキュリティ機構です。CORSポリシーの設定ミスはアプリケーションを無言で失敗させることがあり、過度に許容的なポリシーはAPIを不正アクセスから守れません。CORS Policy Testerは、複数のドメインをセットアップしたりテストコードをデプロイしたりせず、実際のブラウザシナリオをシミュレートしてサーバーのCORS設定を検証するのに役立ちます。

このツールを使用するには、APIエンドポイントのURLを入力し、同一オリジンリクエスト、シンプルヘッダーのクロスオリジン、カスタムヘッダーやHTTPメソッドを含む複雑なプリフライトリクエストなど、ユースケースに合わせてシナリオを選択します。ツールはブラウザのCORS検証プロセスをシミュレートし、サーバーが応答として送信すべきヘッダーの内容、リクエストが成功するかどうか、ポリシーが誤設定されている場合にブラウザが表示するエラーメッセージを正確に表示します。これにより、本番環境に到達する前にCORSの問題をデバッグするのが簡単になります。

このツールはREST API、マイクロサービス、またはウェブクライアントからの異なるドメインのリクエストに対応する必要があるバックエンドで作業する開発者にとって非常に価値があります。フロントエンドとバックエンドが異なるポートで実行されるローカル環境で開発している場合、または第三者のサービスを統合する場合に特に役立ちます。さまざまなCORSシナリオをテストすることで、APIがセキュアで機能的であることを保証できます。

よくある質問

コード実装

# CORS headers generator (Flask example)
from flask import Flask, request, jsonify

app = Flask(__name__)

CORS_CONFIG = {
    "allowed_origins": ["https://example.com", "https://app.example.com"],
    "allowed_methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
    "allowed_headers": ["Content-Type", "Authorization", "X-Requested-With"],
    "allow_credentials": True,
    "max_age": 86400,
}

def add_cors_headers(response, origin):
    allowed = CORS_CONFIG["allowed_origins"]
    if origin in allowed or "*" in allowed:
        response.headers["Access-Control-Allow-Origin"] = origin
    if CORS_CONFIG["allow_credentials"]:
        response.headers["Access-Control-Allow-Credentials"] = "true"
    response.headers["Access-Control-Allow-Methods"] = ", ".join(CORS_CONFIG["allowed_methods"])
    response.headers["Access-Control-Allow-Headers"] = ", ".join(CORS_CONFIG["allowed_headers"])
    response.headers["Access-Control-Max-Age"] = str(CORS_CONFIG["max_age"])
    return response

@app.before_request
def handle_preflight():
    if request.method == "OPTIONS":
        response = app.make_default_options_response()
        return add_cors_headers(response, request.headers.get("Origin", ""))

@app.after_request
def apply_cors(response):
    origin = request.headers.get("Origin", "")
    return add_cors_headers(response, origin)

@app.route("/api/data")
def data():
    return jsonify({"message": "CORS configured successfully"})

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.