当前位置: 首页 > 知识库问答 >
问题:

Netlify NodeJS函数总是返回“对飞行前请求的响应没有通过”

荀子轩
2023-03-14

我正在尝试使用Netlify Lambda函数创建一个APIendpoint。代码在my local中工作得很好,但总是返回从origin对XMLHttpRequest的访问“https:// .netlify.com/.netlify/functions/submit”已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上没有'access-control-allog-origin'标头。

我试图在代码中处理选项post,但似乎不起作用。下面是我的代码:

const axios = require('axios');

const headers = {
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
      'Content-Type': 'application/json',
      'Access-Control-Allow-Methods': '*',
      'Access-Control-Max-Age': 2592000,
      'Access-Control-Allow-Credentials': true,
};

exports.handler = (event, context, callback) => {
      if (event.httpMethod === 'OPTIONS') {
            callback(null, { statusCode: '204', headers });
            return;
      }
      if (event.httpMethod === 'POST') {
            callback(null, {
                  statusCode: 200,
                  body: JSON.stringify({
                        success: true,
                  }),
                  headers,
            });
            return;
      }
};

我尝试从React应用程序调用它,使用Axios,如下所示:

axios.post('https://<my-netlify-project>.netlify.com/.netlify/functions/test', reqObj)

我注意到这个错误出现在我的函数调用中

10:24:58 PM: error decoding lambda response: json: cannot unmarshal number into Go value of type string

什么原因导致错误,如何解决?

共有1个答案

葛学民
2023-03-14

使用localhost进行呼叫的已知问题。

这个问题是由您的标头值引起的。所有的值都应该是字符串。回调中的响应希望这些值是字符串。

解码错误lambda响应:JSON:无法将数字解封为字符串类型的Go值

const headers = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
  'Content-Type': 'application/json',
  'Access-Control-Allow-Methods': '*',
  'Access-Control-Max-Age': '2592000',
  'Access-Control-Allow-Credentials': 'true',
};
 类似资料:
  • 选项https://dev-01-api-apptracker2/管理员401(未经授权) 从源https://dev-01-web-apptracker2在'https://dev-01-api-apptracker2/Admin'访问XMLHttpRequest'已被CORS策略阻止:对起飞前请求的响应不通过权限改造检查:请求的资源上不存在'Access-Control-允许-Origin'标

  • 我已经找了5个小时左右,但我放弃了。我的ajax get请求不起作用。 它连接到标准的C#mvc api,但我得到的只是这个错误: 无法加载XMLHttpRequesthttp://localhost:18428/api/Reservation/1?weekNumber=1. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost因

  • 当我试图通过Chrome的ajax请求访问API时,我收到了以下响应: "加载http://localhost:1880/api_resource失败:对预试请求的响应没有通过权限改造检查:请求的资源上没有'Access-Control-允许-起源'标头。因此,原产地http://localhost:3000不允许进入。" 从消息中可以看到,客户端和API都在本地运行。 据我所知,这种情况与COR

  • 我已经创建了一个应用程序,使用角和springboot进行Spring安全的基本身份验证,但我得到401错误...我是springboot新手 “从源'http://localhost:4200'访问'http://localhost:8080/hello-world/path-variable/MSD'的XMLHttpRequest已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有

  • 我在做这个请求: 但在执行该方法时,我遇到了以下错误:访问'http://localhost:8083/uaa/addPermission/group/2“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。我已经有了CORS Chrome插件,我可以做其他类型的请求,比如POST和GET,接收请求的方法有@Cro

  • 问题内容: TL; DR:一个JSON请求有时返回一个对象,有时返回一个键的对象数组,但我不知道如何使用Swift 4正确解析该对象。 前言:我正在使用NextBus API 制作公共汽车服务应用程序,以提供教堂山地区公共汽车的公共汽车时刻表更新和预测。但是,在获取公交车站的预测信息时遇到问题( NextBus API PDF的pp 13-15页上的预测请求信息 )。 问题: 停止预测的请求返回两