在飞行前响应中,节点Js请求标头字段Access-Control-Allow-Headers不允许Access-Control-Allow-Origin

时间:2018-07-16 07:37:04

标签: node.js google-cloud-endpoints

在节点API中添加自定义标头(名为“ RBR”)并在Flex Env​​ironment中托管为Google Endpoint后,出现CORS错误。此节点API是从Angular代码调用的。我们已经将Angular和Node代码托管为Google Flex Env​​ironment。 API具有三个参数,两个标头值和一个主体值。 1.Authorization(即OAuth JWT令牌)2. RBR(我们具有用于Authorization的自定义存储库)3. body值-Json类型。

在openapi.yaml文件中,我们为CORS问题添加了以下几行。

x-google-endpoints:
    - name: "backend-dot-sanm-gcp-kafka-shipping-dev.appspot.com"
    allowCors: "true"

在节点js中,我们为CORS问题添加了以下代码。

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers",
    "Access-Control-Allow-Headers,Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,authorization,rbr");
  if (req.headers.origin) {
    res.header('Access-Control-Allow-Origin', req.headers.origin);
  }
  if (req.method === 'OPTIONS') {
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE");
    return res.status(200).json({});
  }
  res.setHeader('Access-Control-Allow-Credentials', true);
  next();
});

2 个答案:

答案 0 :(得分:0)

尝试一下:

1。在终端:df['Month'] = pd.Series(d.values) df['DateValue'] = pd.Series(d.keys()) . . .

2。在您的代码中:

npm i cors --save

答案 1 :(得分:0)

以下是在NodeJs + Google Flex环境中解决此CORS问题的步骤,

  1. 更新您的中间件代码

     new javax.xml.ws.soap.MTOMFeature(false, Integer.MAX_VALUE)
     
  2. 在app.yaml中

 app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers",
    "Origin, X-Requeted-With, Content-Type, Accept, Authorization, RBR");
  if (req.headers.origin) {
    res.header('Access-Control-Allow-Origin', req.headers.origin);
  }
  if (req.method === 'OPTIONS') {
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE");
    return res.status(200).json({});
  }
  next();
 });