0

我有一个无服务器快递应用程序。在应用程序中,我有一个名为“/”的 app.get,它应该调用一个 api,从 api 检索数据并将其发送回用户。

https://y31q4zn654.execute-api.eu-west-1.amazonaws.com/dev

我可以在返回的页面上看到数据为 json。

这是我的 lambda 函数的 index.js:

const serverless = require('serverless-http');
const express = require('express');
const request = require('request');
const app = express()

app.get('/', function (req, res) {

  var options = { method: 'POST',
   url: 'https://some.api.domain/getTopNstc',
   headers:
    {   'Content-Type': 'application/json' },
   body: {},
   json: true
  };

  request(options, function (error, response, body) {
    console.log('request call')
   if (error) throw new Error(error);
  // res.status(200).send(response);
  res.json(response);
  });
});

module.exports.handler = serverless(app);

但是我将能够通过 axios (或其他承诺请求库)调用 lambda '/'

我尝试使用以下代码来调用我的 lambda:

axios.get('https://y31q4zn654.execute-api.eu-west-1.amazonaws.com/dev', {
  headers: {
    'Content-Type': 'application/json',
   },
  body:{}
  }).then((res) => {
  console.log(res);
 });

无法加载 https://y31q4zn654.execute-api.eu-west-1.amazonaws.com/dev:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'myDomain' 不允许访问。bundle.js:31 跨域读取阻止 (CORB) 阻止了跨域响应 https://y31q4zn654.execute-api.eu-west-1.amazonaws.com/dev,MIME类型为 application/json。有关详细信息,请参阅 https://www.chromestatus.com/feature/5629709824032768 。

API网关配置: 在此处输入图像描述

4

1 回答 1

1

我同意@KMo。很确定这是一个 CORS 问题。npm 中有一个专门用于此目的的模块,请在此处阅读。

要安装它,请运行npm install -s cors

然后在您的快速应用程序中,添加以下内容:

const express = require('express'); const app = express(); const cors = require('cors'); app.use(cors());

于 2018-06-19T22:20:58.490 回答