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

返回了两个 Access-Control-Allow-Credentials: true,我如果定义

返回了两个 Access-Control-Allow-Credentials: true,我如果定义了,函数计算就不用设置这个headers了吧?

提问14.png

提问15.png

展开
收起
白夜行fighting 2023-06-06 09:42:58 383 0
5 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    如果你的函数计算已经设置了 Access-Control-Allow-Credentials: true,你在返回结果中也设置了相同的 header,那么这两个 header 的作用是一致的,前者是服务器端设置的,后者是客户端(浏览器)接收到响应后解析出来的。

    在跨域请求中,Access-Control-Allow-Credentials 是一个重要的 header,它表示是否允许发送 cookies 等认证信息。如果服务器端设置了该 header 为 true,则客户端在接收到响应后,只有在请求时设置了 withCredentialstrue 才会将 cookies 等认证信息带上。

    因此,如果你的函数计算服务需要支持跨域请求并且需要发送 cookies 等认证信息,你需要确保在函数计算中正确设置 Access-Control-Allow-Credentials header,以及在客户端(浏览器)发送请求时设置 withCredentialstrue

    如果你在返回结果中也设置了该 header,那么在客户端解析时会出现两个相同的 header,这不会对程序的执行造成影响,但可能会对代码的可读性和维护性产生影响。

    因此,在函数计算中设置该 header 即可,不需要在返回结果中重复设置。

    2023-06-06 17:19:28
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    Access-Control-Allow-Credentials 是一个 HTTP 响应头,用于控制是否允许客户端在跨域请求中携带身份凭证(例如 Cookie 和 Authorization)。当服务器返回 Access-Control-Allow-Credentials: true 时,客户端才能够在跨域请求中携带身份凭证。

    如果您的函数计算已经设置了 Access-Control-Allow-Credentials 头,并正确地返回了 true,则客户端就可以在跨域请求中携带身份凭证了。因此,您不需要在客户端中设置此头。

    需要注意的是,如果客户端和函数计算不在同一域名下,则还需要设置 Access-Control-Allow-Origin 头,来允许跨域访问。如果客户端和函数计算在同一域名下,则不需要设置 Access-Control-Allow-Origin 头,因为同源策略不会阻止同一域名下的请求。

    2023-06-06 11:29:21
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    如果你在Flink中使用函数计算时需要设置Access-Control-Allow-Credentials为true,则说明你的函数计算是在安全沙箱中运行的,即在同一个进程内运行,不需要考虑访问控制的问题。 在这种情况下,你可以将Access-Control-Allow-Credentials设置为true,以允许任何来自任何Origin的请求访问你的函数计算。但是,需要注意的是,这种设置可能会导致安全性问题,例如允许未经授权的访问。 因此,在实际应用中,建议根据具体情况来设置Access-Control-Allow-Credentials。如果你的函数计算需要对外提供API接口,则建议将Access-Control-Allow-Credentials设置为仅限于合法的请求来源,例如仅限于来自合法的IP地址、端口或特定的安全组。这样可以更好地保护函数计算的安全性。

    2023-06-06 10:40:20
    赞同 展开评论 打赏
  • 这个是已知问题,我们已经在跟进了。先请您暂时先按照两个Access-Control-Allow-Credentials来开发

    功能发布会在这里记录 https://help.aliyun.com/document_detail/154438.html?spm=a2c4g.478879.0.0.52e72d91RZ3jIm

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-06-06 10:24:10
    赞同 展开评论 打赏
  • 如果函数计算调用的 API 网关后端服务返回了 Access-Control-Allow-Credentials: true,那么客户端需要在发送跨域请求时设置 withCredentials: true 才能正常携带 cookie 等认证信息。此外,在服务端也可以通过检查 Origin 和 Access-Control-Allow-Origin 头部值匹配与否来判断是否允许访问。

    如果您在函数计算中调用的 API 网关后端服务已经设置了 Access-Control-Allow-Credentials: true,那么您的客户端确实无需再设置该头部信息了。但是,在跨域请求时,仍然需要设置 withCredentials: true。这个是因为 Access-Control-Allow-Credentials 头部只是表明服务端支持携带 cookie,但客户端在发送跨域请求时仍然需要设置 withCredentials: true 才能进行携带。

    总之,在跨域场景下,确保服务端和客户端都正确处理好跨域请求相关的头部信息是非常重要的。

    2023-06-06 10:11:17
    赞同 展开评论 打赏
问答分类:
问答地址:

快速交付实现商业价值。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载