Невозможно отправить данные регистрации из внешнего интерфейса в бэкэнд - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь отправить данные формы через HTTP-запрос из AngularJs в Nodejs.Я включил заголовочные файлы для разрешения запросов перекрестного происхождения в angular, но он все еще не работает.

Я получаю ошибку:

Не удалось загрузить localhost: 4000 / Register: Cross originзапросы поддерживаются только для протокольных схем: http, data, chrome, chrome-extension, https.

Код для моего http-запроса:

            var request = $http({
                method: "post",
                url: "localhost:4000/Register",
                headers: {
                    "Access-Control-Allow-Origin": "*",
                    "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
                    "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
                },
                contentType: "application/json;",
                data: myJSON
            });
            request.success(function(data, status, headers, config) {
                $scope.message = data;
                console.log($scope.message);
            });
            request.error(function(data, status, headers, config) {
                alert( "failure message: " +  data);
            });

Это код моего сервера наnodejs:

const db = knex ({
    client: 'pg',
    connection: {
        host : '127.0.0.1',
        user : 'postgres',
        //Enter the password which you entered during postgres installation
        password : '',
        //Whatever the database name be, replace it with 'spdb'
        database : 'spdb'
    }
});

const app = express();

app.use(cors())
app.use(bodyParser.json());

app.get('/',(req,res)=>{
    res.send(database.users);
})
app.post('/Register', (req,res)=>{
    const {fname, lname, rollno, section, password, email, role } = req.body;
const hash = bcrypt.hashSync(password);
db.transaction(trx => {
    trx.insert({
    hash: hash,
    email: email,
    rollno: rollno
})
    .into('login')
    .returning('email')
    .then(loginEmail => {
    return trx('users')
        .returning('*')
        .insert({
            fname: fname,
        lname: lname,
        rollno: rollno,
        section: section,
        email: loginEmail[0],
        joined: new Date(),
        role: role
        })
        .then(user => {
        res.json(user[0]);
})
})
.then(trx.commit)
    .then(trx.rollback)
})
.catch(err => res.status(400).json('unable to register'))

})
app.listen(4000,()=>{
    console.log('app is running on port 4000');
})

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

Заголовки перекрестного источника должны отправляться сервером, проверять и интегрировать https://www.npmjs.com/package/cors в ваше приложение Node JS, и вам будет полезно пойти:)

Надеюсь, это поможет, ура.

0 голосов
/ 25 мая 2018

Добавить расширение CORS из хрома

0 голосов
/ 25 мая 2018

Вы можете запустить как (передний, так и задний) на одном и том же порту в разработке

0 голосов
/ 25 мая 2018

Если у вас есть базовый маршрут '/', верните веб-страницу, попробуйте указать URL запроса:

var request = $http({
  method: 'post',
  url: '/register',
  ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...