uniapp跨域设置

一、在前后端开发过程中,请求接口时,出现跨域问题

二、跨域原因:

由于浏览器同源策略,即:端口号、域名、协议、IP地址必须一致,否则请求将被浏览器拦截。

三、跨域的解决方法

方法1.在manifest.json的代码视图中  根节点中配置h5

 如果需要也可以配置多个跨域地址

        "devServer" : {
            // "port" : 8080, //浏览器运行端口
            "https" : false,
            "proxy" : {
                "/baseUrlTest" : {
                    "target" : "http://192.168.1.34:8084",
                    "changeOrigin" : true,
                    "secure" : false,
                    "pathRewrite" : {
                        "^/baseUrlTest" : ""
                    }
                },
                "/baseUrlBuild" : {
                    "target" : "http://zhbz-test.xxx.com",
                    "changeOrigin" : true,
                    "secure" : false,
                    "pathRewrite" : {
                        "^/baseUrlBuild" : "" //路径重写,将接口路径中以/api开头的部分替换掉
                    }
                }
            }
        },

配置好跨域地址,我们如何使用呢

const BASE_URL = "baseUrlTest";	
const xxx = BASE_URL + "/api/tool/xxx", 

方法2.在项目根目录下(即跟App.vue同级)建vue.config.js,这个文件会默认优先加载

module.exports = {
	devServer:{
		port:'8080',
		disableHostCheck:true,
		proxy:{
			'/dpc':{
				target:'http://XXXXX:9088',
				changeOrigin:true,
				pathRewrite:{
					'^/dpc': ''
				}
			}
		}
	}
}

四、开发环境和生产环境

有的小伙伴开发过程中配置了跨域,也能正常请求接口。当把代码上传服务器的时候,发现接口全都报错了。

这是因为生产环境不需要设置跨域代理,我们只需要把之前的接口路径修改成正确的地址就可以了。

如果生产环境出现跨域问题我们可以让后端进行跨域设置cors,php核心代码如下

'cors'=>[
  'Origin' => ['*'], // 允许跨域的请求源
  'Access-Control-Request-Method' => ['*'], // 接收的请求方法
  'Access-Control-Request-Headers' => ['*'], // 请求头接收类型
  'Access-Control-Allow-Credentials' => false,  // 是否允许请求携带 cookie,注意这里如果设置为true,则会报错 
  'Access-Control-Max-Age' => 3600 // 缓存,可不设置
]

  • 17
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
回答: Uniapp在与后端对接时,有时会遇到跨域问题。跨域问题的解决方法因后端代码和开发风格的不一致而各不相同。有时即使配置跨域也无法解决该问题,需要进行长时间的沟通。为了帮助解决这个问题,我总结了一些后端对接解决跨域配置。在请求接口时,无论是否需要登录凭证,都会报跨域错误。解决方法是与后端沟通,确认后端接收登录凭证的字段名,uniapp中封装好的请求中(uni.request)的Authorization字段用于token验证。如果字段名不一致,可以尝试与后端调整,否则只能自定义请求头。然而,自定义请求头可能会导致请求报错,因此需要进行跨域配置。如果在生产环境中出现跨域问题,可以让后端进行跨域设置cors。一个php的核心代码示例如下: 'cors' => [ 'Origin' => ['*'], // 允许跨域的请求源 'Access-Control-Request-Method' => ['*'], // 接收的请求方法 'Access-Control-Request-Headers' => ['*'], // 请求头接收类型 'Access-Control-Allow-Credentials' => false, // 是否允许请求携带cookie,注意这里如果设置为true,则会报错 'Access-Control-Max-Age' => 3600 // 缓存,可不设置 ] 这样的跨域设置可以解决uniapp跨域请求的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [关于uniapp跨域](https://blog.csdn.net/F2691898750/article/details/130025677)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [uniapp跨域设置](https://blog.csdn.net/HYQ_java/article/details/120157680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值