El mecanisme de Compartició de Recursos d'Orígens Diversos (CORS) és una peça fonamental de la seguretat web que determina si un navegador permet que el codi d'una pàgina web llegeixi una resposta obtinguda d'un origen diferent. El Verificador CORS és una eina dissenyada per analitzar i validar si una sol·licitud específica del navegador serà permesa o bloquejada segons les capçaleres de resposta HTTP que proporcioneu.
Aquesta eina és d'utilitat per a desenvolupadors front-end, desenvolupadors back-end, desenvolupadors de plataformes API i desenvolupadors d'operacions que necessiten verificar si el codi del navegador pot llegir una resposta concreta, o si una resposta de tipus OPTIONS aprova correctament un mètode posterior i els seus noms de capçalera sol·licitats.
Funcionament i processament de dades
El funcionament del Verificador CORS es basa exclusivament en l'anàlisi de les dades introduïdes directament a la interfície. L'eina no es posa en contacte amb cap servidor extern, no llegeix adreces URL, no estableix galetes, no realitza comprovacions de DNS o TLS, ni modifica les configuracions del vostre servidor.
Pel que fa al tractament de la informació, les vostres capçaleres i els detalls de la sol·licitud romanen al vostre navegador. BroBroGo no carrega ni desa res, garantint que les dades introduïdes no s'enviïn a servidors externs.
Cal tenir en compte que un resultat favorable en aquesta eina només cobreix la resposta enganxada i els detalls de la sol·licitud introduïts. L'anàlisi no pot preveure el comportament derivat de redireccions, respostes emmagatzemades a la memòria cau, canvis en les regles del servidor en temps real, la interferència d'extensions del navegador o la resposta real obtinguda després d'un control previ.
Configuració de les dades d'entrada
Per avaluar una política CORS, l'eina requereix definir els paràmetres de la sol·licitud i les capçaleres de la resposta obtinguda:
- Resposta per comprovar: Permet triar entre "Resposta real" o "Resposta prèvia al vol".
- Capçaleres de resposta HTTP: Camp de text on s'han d'enganxar les capçaleres de la resposta HTTP. Per a les respostes de comprovació prèvia, s'ha d'incloure també la línia d'estat. El límit màxim d'entrada és de 200.000 caràcters. Si es deixa buit, es mostra el missatge "Enganxeu les capçaleres de resposta HTTP abans de comprovar-ho.". Si se supera el límit, es mostra "Aquesta resposta és inusualment gran. Manteniu-lo sota els caràcters
‹max›.". Les línies mal formades generen l'error "La línia‹line›no és una capçalera HTTP vàlida ni una línia d'estat." o "La línia‹line›conté un nom de capçalera HTTP no vàlid.". - Sol·licitud d'origen: L'esquema, l'amfitrió i el port opcional de l'origen que fa la petició (per exemple,
https://app.example.com). Ha de ser un origen pur onull, sense rutes, consultes ni credencials. En cas contrari, es mostra l'error "Introduïu un origen amb només un esquema, un host i un port opcional, com ara https://app.example.com.". - Mètode sol·licitat: El mètode HTTP de la petició. Si el format és incorrecte, es mostra "Introduïu un testimoni de mètode HTTP vàlid.". Si s'utilitza un mètode no permès, es llança l'error "Els navegadors no permeten el mètode
‹method›a les sol·licituds fetch.". - Noms de capçalera sol·licitats: Capçaleres que s'enviaran a
Access-Control-Request-Headers, separades per comes o línies. Si una capçalera no és vàlida, es mostra "‹header›no és un nom de capçalera de sol·licitud HTTP vàlid.". - Inclou les credencials: Un selector per indicar si la sol·licitud inclou galetes o autenticació HTTP.
Si hi ha algun problema de format general en els camps, l'eina mostrarà el missatge "Corregiu l'entrada ressaltada i torneu-ho a provar.".
Decisions del navegador i regles d'avaluació
Un cop processades les dades, l'eina mostra un dels següents estats a la secció de resultats:
- "Permès per la resposta CORS enganxada."
- "Bloquejat per la resposta CORS enganxada."
- "Les capçaleres passen, però es desconeix l'estat del control previ."
- "Introduïu una resposta i els detalls de la sol·licitud i, a continuació, comproveu la política CORS."
- "Enganxeu una resposta per comprovar la seva política CORS."
L'eina també desglossa els camps analitzats a la secció "Camps de control d'accés analitzats" (mostrant "No present" si no es troben) i detalla els motius de la decisió basant-se en les següents regles de validació:
Validació de l'origen i credencials
- Si coincideix exactament: "Access-Control-Allow-Origin coincideix exactament amb
‹origin›.". - Si s'utilitza un comodí vàlid: "Access-Control-Allow-Origin permet qualsevol origen per a aquesta sol·licitud.".
- Si falta la capçalera: "Falta Access-Control-Allow-Origin.".
- Si es detecta un conflicte de credencials: "Access-Control-Allow-Origin no pot ser * quan s'inclouen les credencials.". Quan s'inclouen credencials, l'ús de comodins (
*) invalida la capçalera d'origen. - Si l'origen no coincideix: "Access-Control-Allow-Origin és
‹actual›, no‹expected›.". - Si el valor és incorrecte (com ara múltiples orígens o valors separats per comes): "Access-Control-Allow-Origin té un valor no vàlid:
‹value›.". - Per a les credencials, la capçalera
Access-Control-Allow-Credentialsha de ser exactamenttrue. L'eina indicarà "Access-Control-Allow-Credentials és exactament cert." o "Una sol·licitud de credencial necessita Access-Control-Allow-Credentials: true.". Si no s'inclouen credencials, s'indica "Les credencials no s'inclouen, de manera que Access-Control-Allow-Credentials no afecta aquesta decisió.".
Validació de mètodes i capçaleres en el control previ (Preflight)
- Estat HTTP: Per a les respostes de control previ, es requereix un codi d'estat 2xx correcte. L'eina avalua si "L'estat del vol previ
‹status›és correcte." o "L'estat de comprovació prèvia‹status›no és un estat correcte de 2xx.". Si no s'ha enganxat la línia d'estat, el resultat serà indeterminat i es mostrarà "No s'ha enganxat cap línia d'estat HTTP, de manera que no es pot comprovar l'estat de comprovació prèvia de 2xx.". - Mètodes: S'avalua si "El vol previ permet
‹method›." o si "Access-Control-Allow-Methods no permet‹method›.". Els mètodes de la llista segura de CORS no requereixen autorització explícita: "‹method›és un mètode a la llista segura de CORS i no cal que aparegui a Access-Control-Allow-Methods.". - Capçaleres: Si no es demanen capçaleres especials, es mostra "Cap nom de capçalera sol·licitat necessita aprovació prèvia al control.". Si estan permeses, es mostra "El control previ permet els noms de capçalera sol·licitats:
‹headers›.". Si es deneguen, es mostra "Access-Control-Allow-Headers no permet:‹headers›.". - Comodins i excepcions: Si no s'inclouen credencials, es pot utilitzar
*per autoritzar mètodes i capçaleres. Es mostrarà "Access-Control-Allow-Headers: * cobreix aquests noms per a una sol·licitud sense credencials:‹headers›.". No obstant això, la capçaleraAuthorizationés una excepció estricta i s'ha de llistar sempre de manera explícita; en cas contrari, es mostrarà "Authorization s'ha de llistar explícitament; Access-Control-Allow-Headers: * no ho cobreix.". Quan s'inclouen credencials, els comodins per a mètodes i capçaleres perden completament el seu significat de comodí.
Preguntes freqüents
He d'enganxar la resposta real o la resposta del control previ?
Utilitzeu Resposta real per comprovar si el codi del navegador pot llegir una resposta. Utilitzeu la resposta Preflight per a la resposta OPTIONS que aprova un mètode posterior i els seus noms de capçalera sol·licitats.
Per què pot fallar un comodí amb les credencials?
Quan s'inclouen galetes o autenticació HTTP, l'origen permès ha de coincidir exactament amb l'origen sol·licitant. Els comodins dels mètodes i capçaleres permesos també perden el seu significat de comodí.
Un resultat aprovat demostra que la sol·licitud en directe funcionarà?
No. Aquest resultat només cobreix la resposta enganxada i els detalls de la sol·licitud introduïts aquí. Les redireccions, les respostes emmagatzemades a la memòria cau, el canvi de regles del servidor, les extensions del navegador i la resposta real després d'un control previ encara poden canviar el resultat.