**1. 什么是跨域访问**
假设有 A、B 两个网站,我们希望 A 网站可以访问到 B 网站的数据,但是如果 A、B 网站<mark>不在同一个域内</mark>,那么就会产生跨域访问问题,浏览器一般会报出如下错误:
```js
Access to XMLHttpRequest at 'http://localhost:9527/' from origin 'http://localhost:3000'
has been blocked by CORS policy: Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
```
这是因为跨域访问违反了<mark>同源策略</mark>,同源策略规定了浏览器中不同网站之间只能访问同源的网站资源,因为跨域浏览是不安全的。
<br/>
**2. 什么是同源策略**
根据 [百度百科 ](https://baike.baidu.com/item/%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5/3927875?fr=aladdin)同源策略它是由 Netscape 提出的一个安全策略,它是浏览器最核心也是最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能都会受到影响,现在所有支持 JavaScript 的浏览器都会使用这个策略。
<br/>
**3. 什么情况下是同源,什么情况下是非同源**
在协议、域名、端口号都相同的情况下是同源,相反只要这三部分有一个不同则是非同源。
```
http://localhost:8080/web
- http:协议
- localhost:域名
- 8080:端口
```
```
① 协议、域名、端口号都相同,同源。
http://www.123.com/index.html 调用 http://www.123.com/welcome.jsp
② 协议不同,非同源。
https://www.123.com/index.html 调用 http://www.123.com/welcome.jsp
③ 端口不同,非同源。
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/welcome.jsp
④ 域名不同,非同源
http://www.123.com/index.html 调用 http://www.456.com/welcome.jsp
⑤ 虽然localhost等同于 127.0.0.1 但是也是非同源的。说明即使IP相同,域名不同,也是非同源
http://localhost:8080/index.html 调用 http://127.0.0.1:8080/welcom.jsp
```
<br/>
**4. 下面这些情况受到同源策略限制,所以不能跨域访问**
1、Cookie、LocalStorage 和 IndexDB 无法读取。
2、DOM 和 Js对象无法获得。
3、AJAX 请求不能发送。
<br/>
**5. 下面这些情况不受同源策略限制,可以跨域访问**
对于像 img、iframe、script、video 等标签的 src 属性是特例,它们是可以访问非同源网站的资源的。
- 跨域问题
- 跨域是什么
- 跨域解决方案
- 从后端解决
- nginx反向代理
- WebSocket
- websocket是什么
- websocket协议
- 使用场景
- 实现方式
- 注解与html5原生方式
- websocketAPI
- 实现步骤
- 文件上传
- 文件下载
- 广播通信
- 定时推送
- 编程与socketjs方式
- socketjs与stompjs框架
- 实现步骤
- 重载目的地
- SimpMessagingTemplate
- 定时向前端推送数据
- 5种监听事件
- 点对点通信
- 拦截器
- HandshakeInterceptor
- ChannelInterceptor
- poi之excel表格
- 表格版本
- POI常用类
- POI依赖
- 写表格
- 编写表格过程
- 单元格边框样式
- 单元格背景色
- 冻结行或列
- 单元格合并
- 单元格内换行
- 文档内跳转
- 读表格
- Web中的Excel操作
- 导出表格
- 读取表格
- poi之word文档
- word版本
- 写word
- 基本使用
- 标题样式
- 添加图片
- EasyExcel表格
- EasyExcel是什么
- 与其他Excel工具对比
- EasyExcel依赖
- 读Excel
- 简单读取
- 指定列位置
- 读取多个sheet
- 格式转换
- 多行表头
- 同步读
- 写Excel
- 简单写入
- 单元格样式
- 拦截器
- 列宽
- 冻结行或列
- 合并单元格
- 填充Excel
- SpringSecurity
- SpringSecurity是什么
- 同类型产品对比
- 环境搭建
- 相关概念
- 密码加密
- Web权限控制
- UserDetailsService接口
- 登录认证
- 自定义登录页
- 未授权跳转登录页
- 权限控制
- 自定义403页面
- 权限注解
- 记住我功能
- 注销功能
- CSRF
- CSRF是什么
- CSRF保护演示
- 前后端分离权限控制
- 环境搭建
- 认证实现
- 会话管理
- 动态权限管理
- 微服务权限控制
- 权限控制方案
- SpringBoot整合RabbitMQ
- 整合步骤
- Fanout交换机演示
- Direct交换机演示
- Topic交换机演示
- @RabbitListener方法
- JWT认证与授权
- 环境搭建
- 密码加密
- 认证与授权