【发布时间】:2019-07-14 22:01:09
【问题描述】:
当我在 Heroku 上部署我的应用程序时,它在 Chrome 上运行良好,但无法在 Firefox 和 Safari 上加载。 Heroku Log 没有显示特别的错误: Heroku Log
在 Firefox 的控制台中,它显示:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/graphql. (原因:CORS 请求未成功)。
这是我的服务器设置
require('dotenv').config();
const express = require("express");
const graphqlHTTP = require("express-graphql");
const schema = require('./schema/schema');
const mongoose = require('mongoose');
const cors = require('cors');
mongoose.connect(process.env.mongodburi, { useNewUrlParser: true })
mongoose.connection.once('open', ()=>{
console.log('Connected to database');
});
const app = express();
app.use(cors());
app.use(express.static("public"));
app.use('/graphql', graphqlHTTP({
schema,
graphiql: true
}));
app.withCredentials = true;
const port = process.env.PORT;
app.listen(port, ()=>{
console.log(`Now listening requests on port:${port}`);
})
有些人似乎说这是一个安全许可证问题。知道如何解决吗?
【问题讨论】:
-
如果您删除此行是否有效:app.use(cors()); ?
-
试过了。没用...
-
我认为您的服务器设置很好,但是您如何在客户端连接?看来您正在使用
http://localhost:4000/graphql尝试使用heroku url。 -
我不知道为什么它仍然调用本地主机。在 Chrome 上,网络向 localhost:4000/graphql 发出相同的请求,但它可以工作。这是最让我困惑的地方。
标签: javascript express heroku graphql graphql-js