En oauth2 para la aplicación de una sola página (SPA), podemos revocar los tokens de acceso del tipo de concesión implícita utilizando una solicitud ajax (esto no se recomienda ahora). Intenté hacer una solicitud como la siguiente desde un SPA a un servidor de identidad en otro dominio. No me estaban bloqueando debido al CORS.
<script>
function revokeToken() {
var params= 'token='+ getAcceesToken() + '&token_type_hint=access_token&client_id=' + getClientID();
request = new XMLHttpRequest();
request.open('POST', getRevokeURL(), true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function() {//Call a function when the state changes.
if(request.readyState == 4 && request.status == 200) {
alert(request.responseText);
}
}
request.send(params);
}
</script>
Cuando revisé los documentos en [1], dice que algunas solicitudes no activan una verificación previa de CORS, esto incluye solicitudes POST con la aplicación Content-Type / x-www-form-urlencoded también.
Creo que existe un riesgo de seguridad debido a dicha exención. Incluso pude hacer con éxito la revocación con Chrome también. ¿Por qué los navegadores permiten estos casos?
La verificación previa de CORS se activó solo cuando cambié el tipo de contenido a application / json
[1] enlace