Этот HTML-формы действительно отправить запрос, и аутентификация Google работает:Pure HTML формы работы, тот же запрос с Ajax не удается
<form action="/auth/google" method="get">
<button type="submit">
Login with google
</button>
</form>
Однако содержание ответа (JSON) отображается в браузере, как HTML-страница, и по какой-то причине заменяет текущую страницу. Если я не могу подавать форму (т. Е. e.preventDefault()
), ничего не происходит вообще. Я не знаю, как просто поймать JSON.
Так что я пытаюсь сделать тот же вызов, используя Ajax
<button type="submit" id="btnGoogle">
Login with google
</button>
<script>
$('#btnGoogle').click((e) => {
$.ajax({
type: "GET",
url :"/auth/google",
dataType : "json",
crossDomain : true, // no effect
headers : {
// Tried many headers, no effect
}
})
.success((data) => {
console.log("Success!", data))
})
.error((err) => {
console.error(err.statusText);
})
});
</script>
, но я получаю ошибку Междоменные
XMLHttpRequest не может загрузить https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur ... d = 178168129307-5g50gah2he0gjjl2or73a1va8ha66s24.apps .googleusercontent.com. Нет заголовка «Access-Control-Allow-Origin» на запрашиваемом ресурсе . Origin 'http://localhost:8100' поэтому не допускается доступ.
На узле/Экспресс-сервер:
app.get('/auth/google',
passport.authenticate('google', {
scope: ['https://www.googleapis.com/auth/plus.profile.emails.read']
}));
Как прийти в форму HTML, которая достигает тот же самый маршрут сервера с теми же параметрами, что делает его, но вызов Ajax не делает?
Редактировать
Я нашел обходной путь путем установки CORS extension for Chrome, так что ... Да, это вроде работает, но почему вызов Ajax это нужно, в то время как регулярная форма HTML не делает?
Спасибо, это элемент ответа, и это помогает, но на самом деле не решает проблему. Я все еще не могу понять, как вернуть JSON (JWT) из кнопки Google без перезагрузки всей страницы. –
Прошу прощения, я совсем не получил последний комментарий? –
@JeremyThille: Извините неправильную интерпретацию полезной информации, которую вы хотели. Из интереса, какова ваша серверная технология? –