gpt4 book ai didi

angularjs - 响应的 HTTP 状态代码为 400 + 请求的资源上不存在 'Access-Control-Allow-Origin' header 。 - 平均堆栈

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:33 25 4
gpt4 key购买 nike

我需要将一个字符串传递给 Node 并在浏览器控制台中传递以下响应:

Failed to load http://localhost:3003/api/buscarCep: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4000' is therefore not allowed access. The response had HTTP status code 400.

我正在将 MEAN 堆栈与 Angular 1 一起使用。

我的服务器 Node :

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

服务器是一个 Node ,位于我正在测试的同一台机器上。所以这都是本地的。我的服务器的 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()
}

angular.factory :

(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 参数是从 Controller 接收的。到目前为止一切顺利,问题从现在开始发生:

后端路由:

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 }

最奇怪的是,例如,“警报”路线上的所有内容都有效,但在那篇文章中却没有。我做错了吗?

最佳答案

You can use npm library cors which is much easier cors-npm

你不需要使用express-cors

const allowCors = require('./cors')

关于angularjs - 响应的 HTTP 状态代码为 400 + 请求的资源上不存在 'Access-Control-Allow-Origin' header 。 - 平均堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50245301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com