Express.js post request "Origin null是不允许的"错误

Express.js post request "Origin null is not allowed" error

本文关键字:quot 不允许 错误 null Origin post js Express request      更新时间:2023-09-26

我试图发布一个json数据,其中包含一组从JavaScript到Express.JS的键和值。我已经按照其他帖子的建议添加了cors的使用,还有res.header("Access-Control-Allow-Origin", "*");
当我测试来自Chrome邮差应用程序的POST请求时,它工作得非常好。但是当我通过Chrome浏览器通过本地测试网页发送请求时,控制台输出
XMLHttpRequest cannot load http://localhost:8080/submit_project_request. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 400.

Express.JS的代码:

var http = require("http");
var express = require("express");
var xmlbuilder = require("xmlbuilder");
var bodyParser = require("body-parser");
var cors = require("cors");
var app = express();
app.use(cors());
var port = process.env.PORT || 8080;
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
app.get('/submit_project_request', function (req, res) {
    var client_org = req.parm("client_org");
});
app.post('/submit_project_request', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
    console.log(req.body.client_org);
    res.contentType("text");
    res.send("data received");
});
app.listen(8080);

请随时提出任何改进意见。

似乎你正在使用文件://打开你的网页。使用服务器来提供html页面,这样您就可以看到类似localhost:8000/yourpage.html

的内容。

同样,你不需要以下中间件(如果你想配置cors模块,然后使用选项对象,如app.use(cors(options)),见这里的可用选项):

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

您可能还想从submit_project_request路由中删除以下内容:

res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
不建议这样调用next()。在你的代码中,它实际上意味着在这里发送一个404。如果你想这样做,那么使用return next();