uni-app 支付宝小程序云客户端访问云对象url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错

uni-app 支付宝小程序云客户端访问云对象url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错

产品分类:
uniCloud/支付宝小程序云

操作步骤:

客户端非 uni-app, 是用vue3写的前端, 通过 http://localhost:3001 访问 url参数化 云对象会报跨域报错,在支付宝云小程序配了 localhost:3001, 只有支付宝云必现,阿里云无法复现(或者没有这个bug)

预期结果:

可以正常访问

实际结果:

报错 Access to XMLHttpRequest at 'https://env-00jxge1mkcqs.dev-hz.cloudbasefunction.cn/api/userinfo' 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描述:

支付宝云配置了 跨域,访问还是报跨域的错

Image
Image


更多关于uni-app 支付宝小程序云客户端访问云对象url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这个url化地址是不是删掉了?我刚测试访问返回404

更多关于uni-app 支付宝小程序云客户端访问云对象url参数化会报跨域错误 在支付宝小程序云配置跨域也会报错 阿里云正常不会报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


@DCloud_云服务_moyang 跨域报错和 url 能否访问没有关系, 服务端 跨域在 路由前面配着。
我给你重新发一个 可以访问的接口
https://env-00jxge1mkcqs.dev-hz.cloudbasefunction.cn/api/sysUser/login
访问这个 报跨域错误

uni-app 中开发支付宝小程序时,如果你使用云函数或云对象访问外部 API,可能会遇到跨域问题。虽然你在支付宝小程序云配置了跨域,但仍然报错,而阿里云正常,这可能是由于支付宝小程序的跨域策略和配置方式与阿里云有所不同。以下是一些可能的原因和解决方案:


1. 支付宝小程序的跨域配置

支付宝小程序的跨域配置需要在支付宝开放平台的小程序管理后台进行设置,而不是在云函数或云对象中直接配置。

配置步骤:

  1. 登录支付宝开放平台(https://open.alipay.com)。
  2. 进入你的小程序管理后台。
  3. 开发设置 中,找到 服务器域名 配置。
  4. request 合法域名中添加你需要访问的 API 域名(例如 https://api.example.com)。
  5. 保存配置并重新上传小程序代码。

2. 云函数/云对象的请求方式

如果你在云函数或云对象中访问外部 API,确保使用正确的请求方式,并且遵循支付宝小程序的规范。

注意:

  • 支付宝小程序的云函数和云对象运行在支付宝的服务器上,因此需要确保请求的域名已经在支付宝开放平台配置为合法域名。
  • 如果请求的域名未配置为合法域名,即使阿里云正常,支付宝小程序也会报跨域错误。

3. 检查云函数的代码

确保云函数的代码中使用了正确的请求库和参数。以下是一个示例:

const cloud = require('alipay-server-sdk'); // 支付宝云函数 SDK
const axios = require('axios'); // 可以使用 axios 或其他 HTTP 库

exports.main = async (event, context) => {
  try {
    const response = await axios.get('https://api.example.com/data', {
      params: event.query // 将参数传递给外部 API
    });
    return response.data;
  } catch (error) {
    console.error('请求失败:', error);
    return { error: '请求失败' };
  }
};

4. 云对象的 URL 参数化问题

如果你在云对象中动态拼接 URL,可能会导致跨域问题。例如:

const apiUrl = `https://api.example.com/data?param=${event.param}`;
回到顶部