同源和跨域
1. 概述
- 同源策略:
- 同域名,同端口,同协议
- 简单来说,就是违反了同源策略的请求,就是跨域
- 跨域:
- 跨域名,跨端口,跨协议
- 浏览器要求在解析Ajax请求时,浏览器的路径与Ajax的请求的路径,必须满足同源策略。同源就是协议、域名和端口三者必须一致。
- 比较的是
- 浏览器的请求路径 和 Ajax的请求网址
2. 比较示例
- 案例一:
- 浏览器地址:
http://localhost:8080/findAll
- Ajax请求地址:
http://localhost:8080/aaa
- 满足同源策略,服务器可以访问
- 浏览器地址:
- 案例二:
- 浏览器地址:
http://localhost:8081/findAll
- Ajax请求地址:
http://localhost:8080/aaa
- 不满足同源策略,端口号不一样,属于跨域请求
- 浏览器地址:
- 案例三:
- 浏览器地址:
http://localhost:8080/findAll
- Ajax请求地址:
https://localhost:8080/aaa
- 不满足同源策略,协议不一样,属于跨域请求
- 浏览器地址:
- 案例四:
- 前提: IP与域名映射
- 浏览器地址:
http://www.baidu.com:8080/findAll
- Ajax请求地址:
http://10.0.1.1:8080/aaa
- 不满足同源策略
- 虽然写IP和域名理论上是一样的,域名的ASCII码不一样
- 案例五:
- 浏览器地址:
http://10.0.1.1:80/findAll
- Ajax请求地址:
http://10.0.1.1/aaa
- 满足同源策略,可以访问
- 看似不满足同源策略,一个有端口号,一个没有,但是不写端口号时,浏览器会默认给他补一个,
http
协议的默认端口号是80
- 看似不满足同源策略,一个有端口号,一个没有,但是不写端口号时,浏览器会默认给他补一个,
- 浏览器地址:
- 案例六:
- 浏览器地址:
https://10.0.1.1:443/findAll
- Ajax请求地址:
https://10.0.1.1/aaa
- 满足同源策略
- 看似不满足同源策略,一个有端口号,一个没有,但是不写端口号时,浏览器会默认给他补一个,
https
协议的默认端口号是443
- 看似不满足同源策略,一个有端口号,一个没有,但是不写端口号时,浏览器会默认给他补一个,
- 浏览器地址: