Eugenio
Eugenio
ты вообще на голой(ванильной) ноде пишешь что ли?
Stas
с експрессом
Nurlan
Добрый вечер
Stas
я и на ноде добавлял
Nurlan
Ангуляр не отправляет post запрос
Stas
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
Nurlan
в чем может быть проблема?
Stas
pa[aad
Nurlan
чтобы код не перепутали
Nurlan
в общем вот содержимое контроллера
Nurlan
которые принимает данные с формы
Nurlan
function SingUpCtrl($http, $state) {
var vm = this;
vm.signup = function(){
$http.post('/api/user/signup', {
email: vm.email,
first_name: vm.first_name,
last_name: vm.last_name,
password: vm.password,
password2: vm.password2}
)}.success(function(data){
vm.showSignup = false;
vm.showLogin =false;
}).error(function(err){
vm.errors = err;
});
}
Stas
pa[aad
используй три бек тика что бы выделить код
Nurlan
то есть до ноды запрос не доходит
pa[aad
then вместо success
Nurlan
до боди парсера
pa[aad
что в консоли
Nurlan
ругается на ng-min.js
Nurlan
bad request 400
pa[aad
400 это код сервера, значит что ты не так что-то делаешь
pa[aad
тебе нода так отвечает
Nurlan
получается доходит
Nurlan
сейчас api poые запроса с ноды скину
Nurlan
app.post ('/api/user/signup', function(req, res, next){
var errors = {};
if(isEmpty(req.body.email)){
errors.email = "Email field required";
}
else if(!validator.isEmail(req.body.email)) {
errors.email = "Email not righted неправильно введен";
}
if(isEmpty(req.body.first_name)){
errors.firstName = "Name field required";
}
if(isEmpty(req.body.last_name)){
errors.lastName = "Last Name required";
}
if(isEmpty(req.body.password)){
errors.password = "Password field required";
}
else if(!validator.isLength(req.body.password, {min:6, max: 30})) {
errors.password = "Password must be from 6 to 30 symbols";
}
if(isEmpty(req.body.password2)){
errors.password2 = "Password field required";
}
else if(req.body.password !== req.body.password2) {
errors.password2 = "Password не равны";
}
if (isEmpty(errors)){
new User({email:req.body.email,
first_name:req.body.first_name,
last_name : req.body.last_name,
password : req.body.password,
password2 : req.body.password2
}).save(function(err, user){
console.log(req.body);
if(err) return res.status(400).send({msg: 'Error please send support'});
res.status(200).send(user);
})
}
else {
res.status(400).send(errors);
}
})
pa[aad
я же говорил что бы код выделял тремя бектиками, сверху и снизу
pa[aad
res.status(400).send(errors); вот что тебе отвечает, у тебя валидацию не проходит
Nurlan
извинясь что такое бэктик
pa[aad
```
pa[aad
```
Nurlan
я нуб просто еще
pa[aad
code
Nurlan
извините исправлюсь
pa[aad
одинарные бектики если 1 строка
если много строк тремя бектиками выделять
pa[aad
загуглите телеграм разметку markdown
Rem1te
Stas
Eugenio
Stas
а браузер?
Хром,мазила,опера. Проверял в хроме и мазиле
Eugenio
1. если хром то отключи секурити в cmd chrome.exe --disable-web-security
Stas
Eugenio
2. установи плагин https://chrome.google.com/webstore/detail/cors-toggle/jioikioepegflmdnbocfhgmpmopmjkim?utm_source=chrome-app-launcher-info-dialog
pa[aad
CORS проблемы сервака ибо не настроено, все что говорите что это пробелма фронта - сивой кобыли бред
Mixer
Показали бы заголовки. Там в браузере вообще ругаться начинает на CORS если что не так - в консоли. Мол была прервана передача содержимого с левого сервера и все в таком духе.
Rem1te
Rem1te
То что браузер не устраивают заголовки которые раздает сервак - проблема браузера
Mixer
CORS это стандарт безопасности. Без правильных заголовков от сервера - атата будет делать браузер. Любой.
Rem1te
Rem1te
Rem1te
Stas
Если б я знал что именно нужно показывать... Есть вариант подключения через тим вивер или просто кидать весь путь прохождения запроса?
Stas
это сервис на ангуляре, который делает запрос в апи
let loginGoogle = () => {
return $http.get(`/api/auth/google`, {
cache: false,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type',
'Access-Control-Allow-Credentials': true
}});
};
Stas
вот в апи запуск паспорта
router.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email', 'openid'] }));
Artem
Помогите пожалуйста - https://codepen.io/verbart/pen/jKRmYz?editors=1010
Stas
вот гугл стратегия в паспорте
passport.use(new GoogleStrategy({
callbackURL: '/api/auth/google/redirect',
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret
},
(accessToken, refreshToken, profile, done) => {
console.log(profile);
}
));
Stas
вот этот кусок в сервисе работает, но в новом окне, что не вариант
let loginGoogle = function() {
window.open('/api/auth/google','','width=400,height=400');
};
Stas
могу скрины заголовков покидать, если объясните что именно нужно
Rem1te
это сервис на ангуляре, который делает запрос в апи
let loginGoogle = () => {
return $http.get(`/api/auth/google`, {
cache: false,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type',
'Access-Control-Allow-Credentials': true
}});
};
Вам не надо задавать эти заголовки с фронта, эти заголовки должны быть заданы с бек енда
Stas
Rem1te
Ну эти заголовки с фронта на бек ничего не делают
Rem1te
Можно уточнить
Вы делаете запрос с нг
на Вашу ноду
с ноды званите на гугл
и при необходимости отображаете окно авторизации для гугла
ага?
Rem1te
ато я пропустил большую часть диалога
Stas
Rem1te
И после ответа с ВАШЕЙ ноды
вы пытаетесь отобразить в модальном окне форму из гугла, но получаете ошибку корс
Rem1te
ага?
Stas
нет
Rem1te
Stas
как раз в новом окне выдаёт форму входа, а мне нужно что б сделало редирект на форму, а потом если человек авторизировался, перенаправить
Stas
получается что когда я перехожу в новое окно я вижу форму, а когда просто делаю запрос выдаёт ошибку заголовков
Rem1te
Вы делаете запрос на енд поинт гугла для эмитации авторизации?
Stas
да
Stas
ну у меня есть локальная регистрация и теперь добавляю вход через соц сети