Saltar al contenido
🛠️ToolsShed

CORS Policy Tester

Prueba y depura configuraciones CORS con escenarios de navegador simulados.

Separe múltiples orígenes con comas. Use * para permitir cualquier origen (pero no con credenciales)

Acerca de esta herramienta

Intercambio de Recursos entre Orígenes (CORS) es un mecanismo de seguridad web crítico que controla cómo los navegadores manejan solicitudes entre diferentes dominios. Las políticas CORS mal configuradas pueden causar que la aplicación falle silenciosamente, mientras que las políticas demasiado permisivas exponen la API a accesos no deseados. CORS Policy Tester ayuda a los desarrolladores a entender y validar la configuración CORS de su servidor simulando escenarios reales del navegador sin necesidad de configurar múltiples dominios o desplegar código de prueba.

Para usar esta herramienta, ingresa la URL de tu endpoint API y selecciona el escenario que coincida con tu caso de uso, como solicitudes del mismo origen, solicitudes entre orígenes con encabezados simples, o solicitudes de verificación previa complejas con encabezados personalizados o métodos HTTP. La herramienta simulará el proceso de validación CORS del navegador y te mostrará exactamente qué encabezados debe enviar tu servidor en la respuesta, si la solicitud tendría éxito, y qué mensajes de error mostrarían los navegadores si la política está mal configurada. Esto facilita la depuración de problemas CORS antes de llegar a producción.

Esta herramienta es invaluable para desarrolladores que trabajan con API REST, microservicios o cualquier backend que necesite servir solicitudes desde clientes web en diferentes dominios. Es particularmente útil cuando se desarrolla en entornos locales donde el frontend y backend se ejecutan en puertos diferentes, o cuando se integran servicios de terceros. Al probar varios escenarios CORS, puedes asegurar que tu API sea segura y funcional.

Preguntas Frecuentes

Implementación de Código

# 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.