"阿里云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'. "
这个问题是由于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-Origin
、Access-Control-Allow-Headers
和Access-Control-Allow-Credentials
字段。这样,当浏览器发送预检请求时,服务器的响应就会符合预期,不会再出现CORS问题。
FC 3.0 没这个问题了。如果是 2.0 您可以把地域和主账号发给我们,我们加白处理。此群整理至钉群“Serverless 开发者技术学习群”。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。