http,https跨域问题

H5微信公众号商城,域名http://mobile.mm.com,接口域名https://www.bb.com/api/;
场景描述:使用将H5项目转成小程序途中;
问题:

img

已申请证书,有证书,但是依旧报错跨域问题,强制https也报跨域,
前端代码写了代理,线上代码代理不生效(本地走了代理),接口域名走了http://mobile.mm.com,请大家指导!!如何让https时不报跨域,走到正确接口域名https://www.bb.com/api/?

img

img

【以下回答由 GPT 生成】

回答:

对于H5微信公众号商城的http和https跨域问题,可以采取以下步骤进行解决:

  1. 确保你的域名已经申请了证书并且证书是有效的,可以通过浏览器访问 https://mobile.mm.com 确认证书是否正常。

  2. 检查后端API接口的跨域设置。如果你的后端API接口没有设置正确的跨域头,无论前端如何配置都会出现跨域问题。后端需要设置允许访问的域名,以解决跨域问题。

  3. 在前端代码中,可以尝试使用CORS(跨域资源共享)来解决跨域问题。例如,在接口请求的时候设置withCredentials: true,并在响应头中设置Access-Control-Allow-Origin为你允许的域名。

javascript //示例代码 fetch('https://www.bb.com/api/', { method: 'GET', credentials: 'include', headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': 'http://mobile.mm.com', }, }) .then(response => { //处理响应 }) .catch(error => { //处理错误 });

  1. 如果代理在线上代码中不生效,并且你使用的是webpack,可以尝试使用webpack-dev-server的proxy配置来解决跨域问题。在webpack配置文件中添加以下配置:

javascript module.exports = { //其他配置 devServer: { proxy: { '/api': { target: 'https://www.bb.com', changeOrigin: true, pathRewrite: { '^/api': '/api', }, }, }, }, };

然后在前端代码中接口请求的时候将域名改为代理地址 /api,例如 /api/user

javascript // 示例代码 fetch('/api/user', { method: 'GET', credentials: 'include', headers: { 'Content-Type': 'application/json', }, }) .then(response => { //处理响应 }) .catch(error => { //处理错误 });

这些是解决H5微信公众号商城的http和https跨域问题的一些常用方法和步骤,如果以上步骤不能解决你的问题,可能需要进一步的调试和排查。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

域名是不是需要备案啊