Vai al contenuto
🛠️ToolsShed

CORS Policy Tester

Testa ed esegui il debug delle configurazioni CORS con scenari simulati del browser.

Separa più origini con virgole. Usa * per consentire qualsiasi origine (ma non con credenziali)

Informazioni sullo strumento

La condivisione delle risorse tra origini (CORS) è un meccanismo critico di sicurezza web che controlla come i browser gestiscono le richieste tra domini diversi. Le politiche CORS configurate erroneamente possono causare il fallimento silenzioso dell'applicazione, mentre le politiche troppo permissive espongono la tua API ad accessi indesiderati. CORS Policy Tester aiuta gli sviluppatori a comprendere e convalidare la configurazione CORS del server simulando scenari reali del browser senza la necessità di configurare più domini o distribuire codice di test.

Per utilizzare questo strumento, inserisci l'URL del tuo endpoint API e seleziona lo scenario che corrisponde al tuo caso d'uso, come richieste della stessa origine, richieste cross-origin con intestazioni semplici o richieste di pre-flight complesse con intestazioni o metodi HTTP personalizzati. Lo strumento simula il processo di convalida CORS del browser e ti mostra esattamente quali intestazioni il tuo server dovrebbe inviare in risposta, se la richiesta avrebbe successo e quali messaggi di errore mostrerebbero i browser se la politica è configurata erroneamente. Questo facilita il debug dei problemi CORS prima che raggiungano la produzione.

Questo strumento è prezioso per gli sviluppatori che lavorano con API REST, microservizi o qualsiasi backend che deve servire richieste da client web su domini diversi. È particolarmente utile quando si sviluppa in ambienti locali dove il tuo frontend e backend vengono eseguiti su porte diverse, o quando si integrano servizi di terze parti. Testando vari scenari CORS, puoi garantire che la tua API sia sia sicura che funzionale.

Domande Frequenti

Implementazione del Codice

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