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

阿里云Serverless中本地调试是OK的,部署到云函数就这样了,什么原因?

"阿里云Serverless中本地调试是OK的,部署到云函数就这样了,什么原因?
has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is 'true, true' which must be 'true' when the request's credentials mode is 'include'. "

展开
收起
小易01 2023-12-05 20:39:47 50 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题是由于CORS(跨源资源共享)策略导致的。当你在本地调试时,浏览器不会发送预检请求(preflight request),所以不会出现这个问题。但是当你部署到云函数时,浏览器会发送预检请求,而服务器的响应头中的Access-Control-Allow-Credentials的值是true, true,而不是预期的true

    要解决这个问题,你需要确保服务器在响应头中设置正确的Access-Control-Allow-Credentials值。如果你使用的是Node.js,可以使用以下代码:

    const express = require('express');
    const app = express();
    
    app.use((req, res, next) => {
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
      res.header('Access-Control-Allow-Credentials', 'true');
      next();
    });
    
    // 其他路由和中间件
    

    这段代码将设置响应头中的Access-Control-Allow-OriginAccess-Control-Allow-HeadersAccess-Control-Allow-Credentials字段。这样,当浏览器发送预检请求时,服务器的响应就会符合预期,不会再出现CORS问题。

    2023-12-06 14:37:17
    赞同 展开评论 打赏
  • 意中人就是我呀!

    FC 3.0 没这个问题了。如果是 2.0 您可以把地域和主账号发给我们,我们加白处理。此群整理至钉群“Serverless 开发者技术学习群”。

    2023-12-05 23:35:13
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    阿里云云原生 Serverless 技术实践营 PPT 演讲 立即下载
    阿里云产品十月刊 立即下载
    基于阿里云构建博学谷平台实时湖仓 立即下载