Перейти к содержимому

CORS Policy Tester

Тестируйте и отлаживайте конфигурации CORS с помощью смоделированных сценариев браузера.

Разделяйте несколько источников запятыми. Используйте * для разрешения любого источника (но не с учетными данными)

Об этом инструменте

Совместное использование ресурсов между источниками (CORS) — это критический механизм безопасности веб-приложений, который контролирует способ обработки браузерами запросов между различными доменами. Неправильно настроенные политики CORS могут привести к молчаливому отказу приложения, а чрезмерно разрешительные политики подвергают ваш API нежелательному доступу. CORS Policy Tester помогает разработчикам понять и проверить конфигурацию CORS сервера, моделируя реальные сценарии браузера без необходимости настройки нескольких доменов или развёртывания тестового кода.

Для использования этого инструмента введите URL вашего endpoint API и выберите сценарий, соответствующий вашему случаю использования, например запросы одного источника, кросс-доменные запросы с простыми заголовками или сложные предварительные запросы с пользовательскими заголовками или методами 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.