【问题标题】:CORS issues even after using npm cors plugin in node server即使在节点服务器中使用 npm cors 插件后也出现 CORS 问题
【发布时间】:2018-10-31 07:56:06
【问题描述】:

我在 node js 中创建了一个简单的服务器来接收来自 react 应用程序的请求。

但是对于 GET 方法,没有 CORS 错误,但是每当我发布时,它都会给我一个错误。

为了使 POST 方法正常工作,我在操作文件夹的 index.js 文件中实现了它,它应该从 server.js 文件中访问 url。

index.js

import axios from 'axios';

export const GET_NAVBAR = "GET_NAVBAR";
export const LOGIN = "LOGIN";

export const BASE_API_URL = "http://localhost:3030";
export const GUEST_API_URL = "https://XXX.XXX.XXX.X:5443/wcs/resources/store/1";


export const getNavbar = () => {
    return axios.get(BASE_API_URL + '/topCategory').then(res => {
        return {
            type: GET_NAVBAR,
            payload: res.data.express.catalogGroupView
        };
    });
};



export const login = () => {
    return axios.post(GUEST_API_URL + '/guestidentity', {}).then(res => {
        console.log(res);
        return {
            type: LOGIN,
            payload: {}
        }
    }).catch(e => {
        console.log(e);
        return {
            type: LOGIN,
            payload: {}
        }
    });
};

server.js

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const Client = require('node-rest-client').Client;//import it here
const app = express();
const helmet = require('helmet');
const morgan = require('morgan');


// enhance your app security with Helmet
app.use(helmet());

// use bodyParser to parse application/json content-type
app.use(bodyParser.json());

app.use(cors());

// log HTTP requests
app.use(morgan('combined'));



app.post('/guestidentity', (req, res) => {

    var client = new Client();

// direct way
    client.post("https://XXX.XXX.XXX.X:5443/wcs/resources/store/1/guestidentity", (data, response) => {
        res.send({express: data});
    });
});



const port = 3030;
app.listen(port, () => console.log(`Server running on port ${port}`));

我不知道我的代码哪里出错了。任何人都可以帮我解决这个问题。如果有人可以提供见解或指导我,我将不胜感激。谢谢

【问题讨论】:

  • 永远不要暴露你的 IP 地址和端口
  • 你为什么在你的服务器的guestidentity 路由中调用client.post(?是否需要调用该api?那个api在不同的服务器上吗?这个 api 是否适用于 Postman 或任何其他客户端?
  • 是的,它在不同的服务器中。是的,它适用于 Postman。那么现在该怎么办。你能指导我一点。在同一个 server.js 文件中,我使用 GET 方法,但它工作正常。仅用于 POST,我遇到了问题

标签: node.js reactjs express redux axios


【解决方案1】:

就我而言,我使用了

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

它将接受来自任何 * 的来源,您可能想稍后更改

【讨论】:

  • 我的代码从 index.js 到 server.js 的方式是否正确
  • 如果您已经在使用cors 库,则不需要这样做。该库可以满足您的所有需求,还可以添加正确的标头。
【解决方案2】:

在您的 server.js 中,添加以下中间件。

var allowCrossDomain = function(req, res, next) {

res.header('Access-Control-Allow-Origin', 'http://localhost:3030/');

res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');

res.header('Access-Control-Allow-Headers', 'Content-Type');


next();

};

app.use(allowCrossDomain);

【讨论】:

  • 我需要执行 npm install 还是只需添加那段代码。
  • 只需添加它。无需安装任何东西。
  • 但它不起作用...我是从 index.js 到 server.js 的 URL 吗
  • 你有没有正确重启过server.js或者使用nodemon监听变化?
  • 是的,我已经重新启动.....但是它显示了 cors 错误。但是我的代码与我从 index.js 访问 server.js 的方式是否正确
猜你喜欢
  • 2021-04-01
  • 2019-12-13
  • 2018-12-23
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 2014-04-19
  • 2022-01-05
  • 2017-04-27
相关资源
最近更新 更多