跨域:是浏览器的同源策略引起的,为什么游览器会给一个同源策略,是为了安全考虑,我们设想一下,如果我们随意就可以访问别的接口那是不是就乱套了 那么什么是跨域呢: 如果 协议、端口、域名只要有一样不一样就是跨域 比如我们要请求一个接口 我们当前请求的地址和当前运行的地址不一样就是跨域 小程序,服务器与服务器之间不存在跨域 “https(协议):(//api-hmugo)括号之间的内容就是域名”端口号一般都给隐藏了 跨域的解决方案:
一、服务端的代理:vue项目用的就是服务端的代理
(1)、在vue的根目录下新建一个文件 vue.config.js
(2)、在js文件里写上 module.exports={
devServer:{//控制启动的服务命令
proxy:{//代理
'/api':{ //看到请求路径中如果有/api这样的字段 会将这个字段自动转接到target
target:'http://localhost:3000/',//目标源
changeOrigin:true,//允许跨域了
pathRewrite:{
'/api':' '//路径重写
}
}
}
}
二、jsonp
出于安全考录,服务器不允许ajax跨域获取数据 但是我们可以动态创建一个script标签 使用标签的src属性来访问js文件的形式获取js脚本 这个js脚本中的内容是函数调用 该函数调用的参数是服务器返回的数据 如果想要获取这里的参数数据 就需要事先在页面中定义一个回调函数 再回调函数中处理服务器返回的数据 这就是解决跨域问题的jsonp原理 三、服务端设置不跨域
告诉我们跨域了:
当要解决内部的服务器不跨域的话 就可以给我们公司内部的后端说在服务器上添加这个响应头
res.setHeader('Access-Control-Allow-Origin' ,'*') 注:字符一定要是英文的
四、nainx反向代理 (回头自己再搜搜吧)嘿嘿嘿