proxy

自我认知:代理的原理

  • 注:代理和协议无关,无论你是什么协议,代理只认ip地址和端口号

  • 当前服务 127.0.0.1:5556

  • 目标服务 127.0.0.1:5555

疑问:vue单页面开发时我请求目标服务上的数据,这一定会跨域,接口请求会失败

  • 解决方案:服务器代理
  • 服务器把请求路径都当做是对目标服务的路径进行处理,处理的方式是服务器与服务器之间通信(不涉及到跨域问题),
  • 例如:
  • 我请求的路径是/api/list/?nowPage=1
  • 对于当前服务而言完整的路径就是 http://127.0.0.1:5556/api/list/?nowPage=1
  • 此时如果当前服务不是直接响应而是发送一个到目标服务的请求 http://127.0.0.1:5555/api/list/?nowPage=1
  • 等目标服务给出响应之后把响应结果再返回给当前服务的请求http://127.0.0.1:5556/api/list/?nowPage=1
  • 这样开发阶段就避免了跨域的问题
  • 这种功能开发阶段的webpack-dev-server模块内部的服务已经自带了这种功能,只需要简单配置即可,具体配置自行搜索

疑问:涉及到跨域的几种情况

  1. 主域名不同
  2. 端口不同
  3. 协议不同
  4. 域名和域名对应的ip之间
  5. 主域名相同,子域名不同(所有子域的domain设置成主域即可进行跨域)

解决方案:

  1. 后台设置header进行跨域
 res.header('Access-Control-Allow-Origin', '*');
 res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
 res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); 
 if (req.method == 'OPTIONS') {
     res.send(200); 
 }
  1. postMessage
  2. jsonp 仅支持get
  3. domain
  4. 服务器代理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。