Я работаю над клиентом JS, чтобы продемонстрировать рабочий процесс OAuth для одностраничного приложения (SPA).Я использую WSO2 в качестве сервера авторизации.
Клиент (браузер) может получить код авторизации после того, как пользователь прошел страницу входа и согласия.Но когда он пытается запросить токен с приведенным ниже кодом ajax, он зависает.
Мой ajax (main.html):
// process the auth code
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
if (getParameterByName('code')) {
var auth_code = getParameterByName('code');
var token_endpoint = "https://authserver:9443/oauth2/token";
var callback_uri = "http://spa/main.html#callback";
$.ajax({
url: token_endpoint,
headers: {
"Authorization":"Basic MWhWRmhRMDdUU1dnS3RNWHlDbjhLeVNNY1BzYTp0UnVaVHlkU01lM3oyeVRpZFNob29XSFo2c2th",
"Content-Type":"application/x-www-form-urlencoded"
},
method: "POST",
dataType: "text",
data:
{
grant_type: "authorization_code",
code: auth_code,
redirect_uri: callback_uri
},
success: function(data){
console.log("success: "+data);
alert("ajax success");
},
error: function(jqXHR, textStatus, errorThrown) {
alert("ajax error!");
alert(jqXHR.responseText);
}
});
}
Запрошенные предупреждения: 1) ошибка ajax!2) undefined
Я проверил информацию об инструменте разработчика Chrome, как показано ниже:
General
Request URL: https://authserver:9443/oauth2/token
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: 10.27.134.142:9443
Referrer Policy: no-referrer-when-downgrade
Заголовки ответа
Allow: POST,OPTIONS
Content-Length: 0
Date: Wed, 19 Jun 2019 03:51:54 GMT
Server: WSO2 Carbon Server
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Заголовки запроса
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: POST
Origin: http://spa
Referer: http://spa/main.html
Сначала я сомневаюсь, что что-то не так с CORS.Я проверил WSO2 сервер уже включен CORS глобально.Может ли кто-нибудь указать мне, что идет не так?Большое спасибо!