X  
登录

还没有账号?立即注册

忘记密码?
登陆
X  
注册

已经有账号?马上登陆

获取验证码
重新获取(60s)
立即注册
统计
  • 建站日期:2021-03-10
  • 文章总数:683 篇
  • 评论总数:697 条
  • 分类总数:10 个
  • 最后更新:11月26日
文章 前端知识

uniapp使用uni.request()API发起接口请求时:因受到CORS(浏览器同源策略影响)出现跨域Access-Control-Allow-Origin的问题解决方案

程序员阿鑫
首页 前端知识 正文

首先需明确uni.request不支持使用 jsonp 方案去解决跨域问题。

最直接的解决办法就是:在uni-app 的项目中找到manifest.json这个配置文件,在该配置文件中配置跨域代理(代理服务器)

解决方案如下:


uniapp使用uni.request()API发起接口请求时:因受到CORS(浏览器同源策略影响)出现跨域Access-Control-Allow-Origin的问题解决方案
-程序员阿鑫-带你一起秃头!
-第1
张图片
选择源码视图对manifest.json配置文件进行编辑:增加这块内容

    "h5": {
        "devServer": {
            "proxy": {//配置代理服务器来解决跨域问题,uniapp不适用CORS方案和设置JSONP方案
                "/api/": { //映射域名
                    "target": "http://localhost:3000",
                    "pathRewrite": {
                        "^/api": ""
                    }
                }
            }
        }
    }

完整视图代码:

{
    "name": "wx-MiniPro",
    "appid": "__UNI__06A0CD9",
    "description": "",
    "versionName": "1.0.0",
    "versionCode": "100",
    "transformPx": false,
    /* 5+App特有相关 */
    "app-plus": {
        "usingComponents": true,
        "nvueStyleCompiler": "uni-app",
        "compilerVersion": 3,
        "splashscreen": {
            "alwaysShowBeforeRender": true,
            "waiting": true,
            "autoclose": true,
            "delay": 0
        },
        /* 模块配置 */
        "modules": {},
        /* 应用发布信息 */
        "distribute": {
            /* android打包配置 */
            "android": {
                "permissions": [
                    "<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>",
                    "<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>",
                    "<uses-permission android:name="android.permission.VIBRATE"/>",
                    "<uses-permission android:name="android.permission.READ_LOGS"/>",
                    "<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>",
                    "<uses-feature android:name="android.hardware.camera.autofocus"/>",
                    "<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>",
                    "<uses-permission android:name="android.permission.CAMERA"/>",
                    "<uses-permission android:name="android.permission.GET_ACCOUNTS"/>",
                    "<uses-permission android:name="android.permission.READ_PHONE_STATE"/>",
                    "<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>",
                    "<uses-permission android:name="android.permission.WAKE_LOCK"/>",
                    "<uses-permission android:name="android.permission.FLASHLIGHT"/>",
                    "<uses-feature android:name="android.hardware.camera"/>",
                    "<uses-permission android:name="android.permission.WRITE_SETTINGS"/>"
                ]
            },
            /* ios打包配置 */
            "ios": {},
            /* SDK配置 */
            "sdkConfigs": {}
        }
    },
    /* 快应用特有相关 */
    "quickapp": {},
    /* 小程序特有相关 */
    "mp-weixin": {
        "appid": "",
        "setting": {
            "urlCheck": false
        },
        "usingComponents": true
    },
    "mp-alipay": {
        "usingComponents": true
    },
    "mp-baidu": {
        "usingComponents": true
    },
    "mp-toutiao": {
        "usingComponents": true
    },
    "uniStatistics": {
        "enable": false
    },
    "h5": {
        "devServer": {
            "proxy": {//配置代理服务器来解决跨域问题,uniapp不适用CORS方案和设置JSONP方案
                "/api/": {//映射域名
                    "target": "http://localhost:3000",
                    "pathRewrite": {
                        "^/api": ""
                    }
                }
            }
        }
    }
}

重启项目,当前端再次发起uni.request()接口请求时,不再受浏览器同源策略CORS的影响,也不再需要配置请求头:Access-Control-Allow-Origin

uni.request({
    url: '/api/retroaction',
    method: 'POST',
    data: {},
    success: res => {console.log(JSON.stringify(res))},
    fail: () => {},
    complete: () => {}
});

另外

跨域问题只出现在H5上,小程序和APP端不存在跨域问题

如果,这样还解决不了跨域问题
那么就....


uniapp使用uni.request()API发起接口请求时:因受到CORS(浏览器同源策略影响)出现跨域Access-Control-Allow-Origin的问题解决方案
-程序员阿鑫-带你一起秃头!
-第2
张图片

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
自己动手给网站增加一个夜间模式
« 上一篇
腾讯云CDN网络配置教程
下一篇 »
为了防止灌水评论,登录后即可评论!
注册登录

HI ! 请登录
注册会员,享受下载全站资源特权。
登陆 注册
社交账号登录

IP地址

热门文章

1
抖音无限礼物模拟小工具分享
2
QQ假红包引流QQ群教程及代码
4
卡QQ永久大会员方法

最新文章

标签