我是一名java工程师。 咱写点后端业务代码那是手拿把掐,可这前端的东西可没咋搞过。html,javascript都还好说,css咱真的不会啊。 可心里有点创意,想开发个app,那么就必须硬着头皮学习,实战了。 咱开发用的是HBuilder,使用uni-app前端应用的框架,写了几行代码,就调试一下,可没调试几下,就出问题了。
uni.request({
url:'http://172.18.62.70:8080/abc/rateLimit',
method:'GET',
timeout: 10000, // 设置超时时间为 10 秒
sslVerify:false,
success:(res) =>{
console.log('请求成功',res.data);
},
fail: (err) => {
console.log('请求失败', err);
},
complete: () => {
console.log('请求完成');
}
});
接口的返回结果死活打印不出来,打出来的是请求失败。 多方尝试下发现内置浏览器可以打印出请求成功,外部浏览器是失败。 网上搜索了下发现是跨域了,内置浏览器做了处理,所以不会有问题。 在Controller上加上@CrossOrigin(origins = "*")注解,OK问题解决。
总结:
跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议、域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略,即请求的目标与当前页面的域名、端口、协议不一致时,浏览器会阻止请求的发送或接收。 哎呀,对跨域的理解咱又加深了一点点。