【问题标题】:Node api preflight failed in postman邮递员中的节点 api 预检失败
【发布时间】:2017-10-24 18:10:05
【问题描述】:

当通过浏览器调用 API https://mywebsite.com/api/register 并从服务器返回正确的响应为 { "error": false, "message": "Hello World" } 如果我们从邮递员那里收到相同的请求,那么它会返回一些 html 内容,如请启用 JavaScript 以查看页面内容。 下面是节点端代码:

var express = require("express");

var app = express();

var bodyParser = require("body-parser");

var router = express.Router();

var fs = require('fs');
var https = require('https');

var cors = require('cors');

app.use(cors());

app.use(bodyParser.json({limit: '50mb'}));

app.use(bodyParser.urlencoded({ limit: '50mb', "extended": false }));

var privateKey  = fs.readFileSync('key.pem');
var certificate = fs.readFileSync('cert.pem');
var passphrase = 'testphrase';
var credentials = {key: privateKey, cert: certificate, passphrase:passphrase};

router.get("/", function (req, res) {

    res.json({ "error": false, "message": "Hello World" });

});
app.use('/api', router);
var server = https.createServer(credentials, app).listen(8080);

通过浏览器工作但不能通过邮递员工作的 api。可能的错误是什么? 请帮忙。谢谢!

【问题讨论】:

标签: javascript node.js express postman


【解决方案1】:

您错过了为服务器定义 API

const api = require('./{your api path}/api');
// Set our api routes
app.use('/api', api);

【讨论】:

    【解决方案2】:

    如果在浏览器中运行,这意味着它是获取请求并且您正在从节点服务器获取 json。在邮递员中设置标题

    检查使用什么标头类型。使用这个可能是你正在使用 application/js ,使用 application/json

    您还可以通过检查请求 ctrl+shift+i 然后在 network 中检查您的请求从浏览器发送的内容。然后点击请求,现在在网络中检查什么是标头类型和请求。你会知道自己做错了什么。

    【讨论】:

    • 感谢 Himanshu 的回复。我通过在邮递员中添加通过浏览器发送的标题来尝试此操作。但还是不行。
    【解决方案3】:

    问题现已解决。问题出在防火墙和代理上。

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 2021-02-11
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多