开发者社区 > 云原生 > Serverless > 正文

函数计算中,自定义域名没改,并且在2.0是函数可以正常被post请求,这是为什么呢?

函数计算中,有一个函数绑定了自定义域名,我的一个网站用 fetch 发起一个 post 请求到这个自定义域名,body 是 json string,结果浏览器先发起了 OPTIONS 请求,但 options请求失败,另外这这个函数是从2.0改成3.0的,自定义域名没改,并且在2.0是函数可以正常被post请求,这是为什么呢?

展开
收起
多麻辣哦 2024-01-03 17:07:59 51 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题可能是由于 Serverless Framework v3.0 对跨域请求的处理方式发生了变化。在 v3.0 中,浏览器会首先发送一个预检请求(OPTIONS),以检查服务器是否允许跨域请求。如果预检请求失败,浏览器将不会发送实际的请求。

    要解决这个问题,您可以尝试以下方法:

    1. 确保您的自定义域名已正确配置为支持跨域请求。您可以在 CloudFront 控制台中检查和修改这些设置。

    2. 如果您使用的是其他云服务提供商的 API Gateway 或 Lambda@Edge 功能,请确保它们也支持跨域请求。

    3. 在您的函数代码中,添加适当的 CORS 响应头,以允许来自浏览器的预检请求。例如,您可以在函数的响应对象中添加以下内容:

    response.setHeader('Access-Control-Allow-Origin', '*');
    response.setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
    response.setHeader('Access-Control-Allow-Headers', 'Content-Type');
    

    这将允许来自任何来源的请求,并允许 POST、GET 和 OPTIONS 方法。请注意,这只是一个示例,您可能需要根据您的需求调整这些设置。

    2024-01-03 18:13:14
    赞同 展开评论 打赏
  • https://help.aliyun.com/document_detail/2513634.html?spm=a2c4g.2513616.0.i6#section-s91-v5a-lqw
    这个自定义域名在电脑本地用代码去 post 可以正常返回,但是通过我的网页去post就会发起预检请求,如果把自定义域名改为函数的http触发器自动生成的域名,则正常。此回答来自钉群阿里函数计算官网客户。

    2024-01-03 18:03:58
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 热门讨论

    热门文章

    相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载