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
в чем может быть проблема?
подробнее опиши плз
Nurlan
подробнее опиши плз
Ну я просто вижу тут обсуждение идет )
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; }); }
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
Eugenio
Спасибо, поинтересуюсь
у тебя какая ОС и какой браузер??
Stas
у тебя какая ОС и какой браузер??
Пишу на винде 7, есть винда 10 и убунту. Это может быть как то связано?
Stas
а браузер?
Хром,мазила,опера. Проверял в хроме и мазиле
Eugenio
1. если хром то отключи секурити в cmd chrome.exe --disable-web-security
Eugenio
2. установи плагин https://chrome.google.com/webstore/detail/cors-toggle/jioikioepegflmdnbocfhgmpmopmjkim?utm_source=chrome-app-launcher-info-dialog
pa[aad
CORS проблемы сервака ибо не настроено, все что говорите что это пробелма фронта - сивой кобыли бред
Mixer
Показали бы заголовки. Там в браузере вообще ругаться начинает на CORS если что не так - в консоли. Мол была прервана передача содержимого с левого сервера и все в таком духе.
Rem1te
CORS проблемы сервака ибо не настроено, все что говорите что это пробелма фронта - сивой кобыли бред
в смысле бред, само по себе понятия корсов возникает именно в браузере а не на сервере
Rem1te
То что браузер не устраивают заголовки которые раздает сервак - проблема браузера
Mixer
CORS это стандарт безопасности. Без правильных заголовков от сервера - атата будет делать браузер. Любой.
Stas
1. если хром то отключи секурити в cmd chrome.exe --disable-web-security
возник вопрос, если я у себя это сделаю, то пользователь с другого пк тоже самое должен делать?
Stas
То что браузер не устраивают заголовки которые раздает сервак - проблема браузера
Так а как так получается что один и тот же код с ангуляром и без по разному обрабатывается? Значит в ангуляре этих заголовков нет или они другие. Верно?
Rem1te
CORS это стандарт безопасности. Без правильных заголовков от сервера - атата будет делать браузер. Любой.
Значит сервер не хочет что бы его данные можно было получать с клиента, все верно
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
Ну эти заголовки с фронта на бек ничего не делают
Rem1te
Можно уточнить Вы делаете запрос с нг на Вашу ноду с ноды званите на гугл и при необходимости отображаете окно авторизации для гугла ага?
Rem1te
ато я пропустил большую часть диалога
Stas
Ну эти заголовки с фронта на бек ничего не делают
мне помогли, когда я делал загрузку файла, без заголовка с фронта не пропускало
Rem1te
И после ответа с ВАШЕЙ ноды вы пытаетесь отобразить в модальном окне форму из гугла, но получаете ошибку корс
Rem1te
ага?
Stas
нет
Stas
как раз в новом окне выдаёт форму входа, а мне нужно что б сделало редирект на форму, а потом если человек авторизировался, перенаправить
Stas
получается что когда я перехожу в новое окно я вижу форму, а когда просто делаю запрос выдаёт ошибку заголовков
Rem1te
Вы делаете запрос на енд поинт гугла для эмитации авторизации?
Stas
да
Stas
ну у меня есть локальная регистрация и теперь добавляю вход через соц сети