1 XMLHttpRequest 和 fetch , 都需要做跨域 2 地址 , src , href属性不需要受跨域限制
3 同源策略 相同的 端口号 域名 服务器 -- 才能访问
代理分为两种 正向代理 和反向代理 代理一定要有服务器,代理就是让别人干这件事,谁有就让谁干这件事情 我们自己负责用就行了 正向代理 (正向代理是隐藏用户信息的) 不知道找不到访问源
反向代理 实际做的事(负载均衡 将载重量 分给别人 看不到真实的地址—) 找不到 1 cors 服务器设置访问权限 app.use(function (req, res, next) { // 设置允许跨域的域名,代表允许任意域名跨域 res.header("Access-Control-Allow-Origin", ""); //允许的header类型 res.header("Access-Control-Allow-Headers", "content-type"); //跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS"); next() })
2.vue react 代理 (常用) 如果没有就创建一个 放在根目录下 跟packjson 同级 vue.config.js中设置{ //devServer 就是对那我们服务器的配置 devServer: { port:8080,//这个是我们前端的端口号 proxy:// 代理配置 proxy: { '/node': { //代理名称自己起 想起什么就起什么 我们想用什么代理就起什么 target: 'http://192.168.0.106:6061', // 后台接口域名 真实访问的地址 ,可以用自己的 ID ifconfing 也可以用别的他就是 前缀地址 写完了要重启服务器 这个就想相当于 我们用的时候的地址前缀 这里用了 node 代替了 changeOrigin: true, //是否跨域 pathRewrite:{ '^/node':''//路径重写 这里最好和自己起的名字一样 } } } }}
3.jsonp (才是我们前端实现的跨域) 前端实现的跨域 原理 :利用原有属性src(不受同源策略的影响) 进行访问 在 页面《script》里面src写访问的地址 发送请求不需要跨域 只是发送请求后没法接收数据 形参就是接收的数据 用同一个函数名 前端传函数名 后端返回一个函数的调用 调用里面的实参就是调用的数据
1.是通过地址发送的 一定是get 请求 2. 前端在页面要声明一个函数, 并且传给后端 后端要返回一个函数(前端把函数给后端传过去,并且把函数名字传过去) 3.后端返回一个函数的调用 调用里面的实参就是调用的数据
jquery 中有封装好的jsonp