跨域是怎么个事?
- 【一】到底什么是跨域?
- 【二】什么是浏览器的同源策略?
- 【三】跨域问题有哪些解决方案?
- 【四】详细说说Nginx解决跨域问题的实现过程?
- (1)项目准备
【一】到底什么是跨域?
跨域指的是在浏览器中,当一个网页的脚本请求访问另一个域名下的资源时,由于浏览器的同源策略限制,请求会被阻止。同源策略是为了保证用户信息的安全,防止恶意网站窃取数据。
URL 说明 是否允许通信
http://www.a.com/a.js——http://www.a.com/b.js——同一域名下——允许
http://www.a.com/lab/a.js——http://www.a.com/script/b.js——同一域名下不同文件夹——允许 http://www.a.com:8000/a.js——http://www.a.com/b.js——同一域名,不同端口——不允许 http://www.a.com/a.js——https://www.a.com/b.js——同一域名,不同协议——不允许
http://www.a.com/a.js——http://70.32.92.74/b.js——域名和域名对应ip——不允许
http://www.a.com/a.js——http://script.a.com/b.js——主域相同,子域不同——不允许
http://www.a.com/a.js——http://a.com/b.js——同一域名,不同二级域名(同上)——不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.js——http://www.a.com/b.js——不同域名——不允许
【二】什么是浏览器的同源策略?
浏览器的同源策略是一种安全机制,它限制了来自不同源(域名、协议、端口)的网页之间的交互。同源策略的目的是为了防止恶意网站利用跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等方式获取用户的敏感信息或执行恶意操作。
根据同源策略,一个网页只能与同源网页进行交互,即它们的协议、域名和端口必须完全相同。如果两个网页不满足同源要求,浏览器会禁止它们之间的大部分交互操作,比如读取对方的数据、修改对方的内容等。
通过同源策略,浏览器可以有效地隔离不同网站的资源和信息,提高了用户的安全性和隐私保护。但同时也给开发人员带来了一些限制,因为跨域操作通常是很常见的需求。为了允许特定的跨域操作,可以使用一些跨域解决方案,比如跨域资源共享(CORS)或代理服务器等。
启动一个web服务,端口是8081,然后再开启一个web服务/前端服务都可以。端口是8082,然后再8082的服务中通过ajax来访问8081的服务,这就不满足同源策略,就会出现跨域问题。
【三】跨域问题有哪些解决方案?
要解决跨域问题,可以采取以下几种方法:
(1)JSONP:通过动态创建
【四】详细说说Nginx解决跨域问题的实现过程?
(1)项目准备
前端网站地址:http://localhost:8080
服务端网址:http://localhost:8081
确认服务端是没有处理跨域的,先用postman测试服务端接口是正常的
当前端网站8080去访问服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种情况都列举出来并通过nginx代理的方式解决
##(2)跨域主要涉及4个响应头