Мне нужно передать строку на узел и следующий ответ в консоли браузера:
Не удалось загрузить http://localhost:3003/api/buscarCep: Нет
Заголовок «Access-Control-Allow-Origin» присутствует в запрошенном
ресурс. Происхождение 'http://localhost:4000' поэтому не допускается
доступ. Ответ имеет HTTP-код состояния 400.
Я использую MEAN-стек с Angular 1.
Мой серверный узел:
const port = 3003
const bodyParser = require('body-parser')
const express = require('express')
const server = express()
const allowCors = require('./cors')
const queryParser = require('express-query-int')
server.use(bodyParser.urlencoded({ extended: true }))
server.use(bodyParser.json())
server.use(allowCors)
server.use(queryParser())
server.listen(port, function() {
console.log(`BACKEND is running on port ${port}.`)
})
module.exports = server
Сервер является узлом и находится на той же машине, которую я тестирую. Так что все локально. Политики CORS для моего сервера:
module.exports = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE')
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization')
next()
}
Фабрика в угловой:
(function () {
angular.module('primeiraApp').factory('apiExterna', [
'$http',
'consts',
ApiExterna
])
function ApiExterna($http, consts) {
function buscarCep(cep) {
$http.post(`http://localhost:3003/api/buscarCep`, cep)
.then(resp => {
console.log(resp)
return null
}).catch(function (resp) {
console.log("erro")
})
}
return { buscarCep }
}
})()
Параметр CEP получен от контроллера. Пока все хорошо, проблема возникает с этого момента:
Маршруты в бэкэнде:
const express = require('express')
const auth = require('./auth')
module.exports = function(server) {
/*
* Rotas protegidas por JWT
*/
const protectedApi = express.Router()
server.use('/api', protectedApi)
protectedApi.use(auth)
// rotas da API
const alertasService = require('../api/alertas/alertasService')
alertasService.register(protectedApi, '/alertas')
const ApiService = require('../api/apiExterna/apiService')
protectedApi.post('/buscarCep', ApiService.buscarCep)
«auth» - это модуль для аутентификации приложения.
Здесь я должен получить CEP:
const _ = require('lodash')
const fetch = require('node-fetch')
const buscarCep = (req, res, next) => {
const cep = req.body.cep
}
module.exports = { buscarCep }
Самым странным является то, что, например, все на этом "сигнальном" маршруте работает, но в этом посте его нет. Я делаю это неправильно?