ExpressJs应用程序中的cors-js阻止了应通过的请求

时间:2018-11-13 21:30:47

标签: express cors fetch

我相信我正在正确设置Express应用程序的CORS设置,但我的请求仍然失败。

Express Cors设置:

app.use(
  cors({
    origin: ["localhost"]
  })
); 
app.options("*", cors()); // include before other routes

也尝试过

app.use(
  cors()
); 
app.options("*", cors()); // include before other routes

请求:

            fetch(`localhost:5000/charge`, {
                method: "POST",
                headers: {
                    "Content-Type": "application/json"
                },
                body: (
                    JSON.stringify({
                        stripeToken: token.id,
                        chargeAmount: Math.round(100 * this.state.donationAmount) // Needs to be an integer in cents
                    })
                )
            })
                .then(res => {
                    return res.text();
                })
                .then(txt => {
                    console.log(txt);
                })

浏览器错误:

通过CORS策略阻止从原点“ http://localhost:5000/charge”到“ http://localhost:3000”的访存:所请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。

有什么想法在这里失败了吗?我需要回复,因此no-cors对我不起作用。

2 个答案:

答案 0 :(得分:0)

尝试添加前端的完整网址,并添加如下方法:

app.use(cors({
    origin: ['http://localhost:5000'],
    methods: ['GET', 'POST', 'PUT', 'DELETE'],
    credentials: true // enable set cookie
}));

答案 1 :(得分:0)

起源只是一个字符串,而不是RegEx。正则表达式必须这样定义:os.listdir