In oauth2 per l'applicazione a singola pagina (SPA), possiamo revocare i token di accesso del tipo di concessione implicita utilizzando una richiesta Ajax (questo non è raccomandato ora). Ho provato a fare una richiesta come di seguito da un tale SPA a un server di identità in un altro dominio. Non mi sono bloccato a causa del 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>
Mentre esaminavo i documenti in [1], si dice che alcune richieste non attivano un preflight CORS, questo include anche le richieste POST con Content-Type application / x-www-form-urlencoded.
Penso che ci sia un rischio per la sicurezza a causa di tale esenzione. Anche io sono stato in grado di eseguire correttamente la revoca con Chrome. Perché i browser consentono tali casi?
Il preflight CORS è stato attivato solo quando ho cambiato il tipo di contenuto in application / json
[1] link