uni-app 支付宝小程序云 客户端访问云对象 url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错
uni-app 支付宝小程序云 客户端访问云对象 url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错
产品分类:
uniCloud/支付宝小程序云
操作步骤:
在支付宝小程序云 里配置 跨域 域名和端口,然后再通过localhost 访问 云对象url 会报跨域错误。
预期结果:
可以正常访问
实际结果:
报错 Access to XMLHttpRequest at ‘https://env-00jxge1mkcqs.dev-hz.cloudbasefunction.cn/api/sysUser/login’ from origin ‘http://localhost:3001’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
bug描述:
客户端非 uni-app, 是用vue3写的前端, 通过 http://localhost:3001 访问 url参数化 云对象会报跨域报错,在支付宝云小程序配了 localhost:3001, 只有支付宝云必现,阿里云无法复现(或者没有这个bug)
https://env-00jxge1mkcqs.dev-hz.cloudbasefunction.cn/api/sysUser/login
访问这个 报跨域错误



更多关于uni-app 支付宝小程序云 客户端访问云对象 url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
正在排查中。
更多关于uni-app 支付宝小程序云 客户端访问云对象 url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
@DCloud_云服务_moyang 您好, 这是在 支付宝小程序云 服务端配的 ,客户端配了没有任何作用。 同样的请求在阿里云 都没有跨域报错, 但是在支付宝小程序云报了,您那边自己可以试下 ,看怎样才能成功
不过 支付宝云要把这个 withCredentials 设置false ,才能在火狐里请求成功, 阿里云的设置ture 就可以请求成功,不报跨域错误,希望你们能处理好这个问题,而不是临时解决方案
这个要在哪里改呢
看截图,谷歌浏览器 报跨域错误,火狐 ie 正常
这个问题支付宝已修复,预计下周发布。
还是有问题啊
回复 5***@qq.com: 具体问题截图发出来
可以发个新帖
一样的问题!!查了一天了,结果换个阿里云就好了,我真的是服了。
在 uni-app 中访问支付宝小程序云的云对象时,如果使用 URL 参数化(例如通过 uniCloud.callFunction 或 uniCloud.callContainer 传递参数),可能会遇到跨域错误。即使你在支付宝小程序云的控制台中配置了跨域规则,仍然可能报错。以下是一些可能的原因和解决方案:
1. 检查支付宝小程序云的跨域配置
- 确保在支付宝小程序云的控制台中,已经正确配置了跨域规则。跨域规则需要允许你的小程序域名和请求方法(如
GET、POST等)。 - 如果跨域配置没有问题,但仍然报错,可能是支付宝小程序云的跨域机制与阿里云不同,导致配置未生效。
2. 使用云函数的代理请求
- 如果直接访问云对象时出现跨域问题,可以通过云函数来代理请求。云函数运行在服务器端,不存在跨域问题。
- 你可以在云函数中发起请求,然后将结果返回给客户端。这样客户端只需要调用云函数,而不需要直接访问云对象。
示例:
// 云函数代码
exports.main = async (event, context) => {
const result = await uniCloud.callContainer({
path: '/your-endpoint',
method: 'GET',
data: event.query
});
return result;
};
// 客户端代码
uniCloud.callFunction({
name: 'your-cloud-function',
data: {
query: { param1: 'value1', param2: 'value2' }
}
}).then(res => {
console.log(res);
});


