各位大佬,最近整理笔记,遇到了一个问题,没想明白,还望各位大佬解答,谢谢!
使用代理服务器解决跨域时,代理服务器与服务器之间的直接HTTP协议进行通信,而且服务端交互不存在跨域问题,跨域是浏览器因同源策略对ajax(fetch)的限制,这个我理解,但前端项目与代理服务器间的交互我越理越乱,具体问题如下:
1、前端项目运行在浏览器上,浏览器向代理服务器发送的ajax请求,为啥没有跨域问题?我看资料他们说是代理服务器的端口号与前端项目运行时的端口号是一致的,所以没有跨域问题。但计算机一个端口应该只能运行一个程序吧?在React、Vue项目的webpack里面都使用了 http-proxy-middleware 库,这个库的源码在本地创建了一个nodejs服务器,当我们项目启动起来的时候,这个node.js服务器与我们的前端项目是啥关系,没关系还是包含关系啥的?还是说前端运行项目时只是表明监听对应端口,实际并没有占用,所以可以被代理服务器占用?
2、浏览器使用代理插件whistle好像也能实现请求跨域访问? 电脑internet高级设置也能跨域访问? 这些方式有区别呢?
同源策略是浏览器的特色;
被同源策略所限制的是网页;
代理服务器首先是一个服务器,然后才是一个代理;
一个端口当然只能运行一个服务器;
基本上所有在本地实现跨域的方案都可以总结为:使用不受同源策略限制的软件,帮助网页获取跨域资源;
上一条说的是“基本上”,而不是“全部”,因为旧版
chrome
浏览器的同源策略是可以关闭的。