gpt4 book ai didi

node.js - 是什么导致我的 POST 请求失败(使用 Express/Angular 的 CORS)?

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:47 24 4
gpt4 key购买 nike

此时,我觉得我已经尝试了所有我能想到的并且已经被搜索过的东西。

CORS Not Succeeding, FireFox Quantum Console

我的代码的“纯”版本如下:

Server.js - Express

const express = require('express'),
path = require('path'),
bodyParser = require('body-parser'),
cors = require('cors'),
mongoose = require('mongoose'),
config = require('./DB');
businessRoute = require('../routes/business.route');


mongoose.Promise = global.Promise;
mongoose.connect(config.DB, { useNewUrlParser: true}).then(
() => { console.log('Database is connected') },
err => { console.log('Can not connect to the database'+ err) }
);

const app = express();
app.use(bodyParser.json());
app.use(cors());
businessRoute.all('*', cors());
app.use('/business', businessRoute);


let port = process.env.PORT || 4000;

const server = app.listen(function(){
console.log('Listening on port ' + port);
});

business.route.js - 快速、连续。

const express = require('express');
const app = express();
const businessRoutes = express.Router();

// Require Business model in our routes module
let Business = require('../models/Business');


// Defined store route
businessRoutes.route('/add').post(function(req, res) {
let business = new Business(req.body);
business.save()
.then(business => {
res.status(200).json({'business': 'business added successfully'});
})
.catch(err => {
res.status(400).send("Unable to save to database");
});
});

business.server.ts - Angular

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class BusinessService {
uri = 'http://localhost:4000/business';

constructor(private http: HttpClient) { }

addBusiness(person_name, business_name, business_gst_number): void {
const obj = {
person_name: person_name,
business_name: business_name,
business_gst_number: business_gst_number
};
console.log(obj);
this.http.post(`${this.uri}/add`, obj).subscribe(
res => console.log('Done')
);
}
}

已尝试过的内容

我尝试使用以下代码,该代码已在许多网站上推荐,包括 SO:

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Methods', 'POST,GET,OPTIONS,PUT,DELETE');
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});

我尝试删除代码的 cors 模块,并使用尝试的解决方案作为替代。我在快速路由器中使用了代码。我在 server.js 和路由器中结合使用了模块和代码,以及(以及代码中仍然存在的内容)businessRoute.all('*', cors());

我错过了一些东西,我必须错过一些东西。如有任何帮助,我们将不胜感激。

根据要求,以下是来自 Chrome 的网络检查器信息:

Chrome Network Inspector

它确实给了我一个选项错误:

Options Failure

最佳答案

我发现了这个问题,谢谢大卫。问题在于:

const server = app.listen(port, function(){
console.log('Listening on port ' + port);
});

我在 app.listen() 中缺少 port

感谢所有提供帮助的人。我倾向于删除该问题,因为它根本与 CORS 无关,但我收到了关于删除问题的警告。

社区请求

将问题编辑为“为什么 Express 拒绝我的 API 请求?”将是一个更准确的问题,但使之前发布的答案变得无关紧要。除此之外,Ebin 的回答在我见过的有关 CORS 问题的所有答案中都是独一无二的,相信它可能对其他人有帮助。

出于这些原因,我将其留给社区,以及他们对保留问题的看法,以及他们是否有任何改进建议以使其值得保留。

关于node.js - 是什么导致我的 POST 请求失败(使用 Express/Angular 的 CORS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349575/

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