我现在在Google App Engine和带有Express API的NGINX上有2天的CORS问题:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource
虽然我配置了Express CORS module,但仍然会收到错误消息。这是我的配置:
const app = express();
const corsWhiteList = [
'https://mysite',
'https://www.mysite',
'http://localhost:4200'
];
const corsOptions = {
origin: (origin, callback) => {
if (corsWhiteList.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(new Error('Not allowed by cors'));
}
},
credentials: true,
preflightContinue: true,
optionsSuccessStatus: 200,
allowedHeader: ['Content-Type', 'Authorization']
};
app.use(cors(corsOptions));
app.options('*', cors(corsOptions));
我也尝试设置router.use()
,但它没有效果。
我已使用cors-config.json
gsutil
文件设置到我的存储桶中
[
{
"origin": ["https://mysite", "https://www.mysite"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
在我的开发环境中,CORS模块工作正常:例如,如果我将CORS白名单更新为不匹配的白名单。我甚至尝试过CORS的模块基本配置,但结果相同:传入开发,生产失败。
以下是dev中请求的屏幕截图以及prod中的错误:
另一个猜测是在Nginx中启用CORS但it appears that it's not configurable
问题:
是适合部署Node API服务器的Google App Engine吗?
有谁知道如何解决这个问题? 感谢