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.