2022年10月25日
跨域问题只存在于浏览器中,其他平台不存在跨域问题。
uniapp 调试时的跨域解决方案
方法一:manifest.json中配置代理服务
"h5": {"devServer": {"https": false,"proxy": {"/api": {"target": "http://xinchang.jzy.jkmmm.com", //自己项目接口域名"changeOrigin": true, //是否跨域"secure": false, // 设置支持https协议的代理"pathRewrite": {"^/api": ""} //api路径重定向,根据具体情况调整,也可不写}}}}
uni.request({'method': 'POST','url': '/api/user_construct/get_decorations_list', // 请求域名后面的部分地址即可'data': {"site_id": 1507,"be_from": "h5","page": 1,"sort": 2}});
方法二:创建vue.config.js文件,并在里面配置devServer
module.exports = {devServer: {proxy: {'/prefix': {target: 'https://api-remote.xxxx.com',pathRewrite: {'^/prefix': ''}}},}}
部署时的跨域解决方案
方案1:最利索的,当然还是将前端代码和后端接口部署在同域的web服务器上。
方案2:由后台服务器配置策略,设为允许跨域访问。
thinkPHP5
// index.php 入口文件中添加// OPTION请求支持跨域if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Headers: *");header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');exit();}// GET POST请求支持跨域header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Headers: *");header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
eggjs
// 1、安装egg-cors包npm i egg-cors --save// 2、在plugin.js中设置开启corsexports.cors = {enable: true,package: 'egg-cors',};// 3、在config.default.js中配置config.security = {domainWhiteList: [ '前端网页托管的域名' ],};
(完)
