javascript - Express.js发布请求 "Origin null is not allowed"错误

标签 javascript node.js express

我正在尝试将包含一组键和值的 json 数据从 JavaScript 发布到 Express.JS。我已经按照其他帖子的建议添加了 cors 使用,还有 res.header("Access-Control-Allow-Origin", "*");
当我测试 Chrome Postman 应用程序的 POST 请求时,它工作得很好。但是当我通过 Chrome 浏览器通过本地测试网页发送请求时,控制台输出
XMLHttpRequest 无法加载 http://localhost:8080/submit_project_request。 请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问来源“null”。响应的 HTTP 状态代码为 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);

请随时提出任何改进建议。

最佳答案

您似乎正在使用 file://打开您的网页。使用服务器来提供您的 html 页面,以便您看到类似 localhost:8000/yourpage.html

此外,您不需要以下中间件(如果您想配置 cors 模块,请使用选项对象,如 app.use(cors(options)) 查看可用选项 here ):

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();

关于javascript - Express.js发布请求 "Origin null is not allowed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621003/

相关文章:

Javascript:未定义字符串的格式

javascript - 在nodejs中提取表单数据

javascript - 在 react 中,如果我将 shouldComponentUpdate 设置为 false,我发送给子级的任何状态都会更新吗?

node.js - npm安装错误: Error: 404 Not Found: flatmap-stream@0. 1.2

javascript - 等待 Mocha api 测试

node.js - 如何使用 Mocha 和 Nock 重新测试相同的 URL?

javascript - 如何使用 jest 函数发送响应?它给出了异步回调错误

node.js - 如何使用 Node/Express 和 AJAX 发送表单删除请求?

node.js - 使用 MongoDB 数据库部署 Node.js API

JavaScript json 返回未定义