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.