关于跨域
CORS跨域
CORS跨域请求分为简单请求和非简单请求。
简单请求
- 请求方法:GET | POST | HEAD.
- 请求头的取值范围:Accept,Accept-Language,Content-Language,Contant-Type(只限于text/plain,multipart/form-data,application/x-www-form-urlencoded)
非简单请求
非简单请求需要先发送预检请求。预检请求的方法为OPTIONS.
关于CORS的cookie
默认CORS跨域是不会携带cookie的。如果需要跨域携带cookie,需要满足三个条件:
- web请求设置withCredentials。
axios.defaults.withCredentials = true;
- 响应头中添加字段:Access-Control-Allow-Credentials:true
- Access-Control-Allow-Origin的值为非*。
JSONP跨域
本质是通过script, img等标签的src属性,不受同源策略的限制。
- 在客户端定义一个函数
- 在服务端调用这个函数,并传入数据,以函数的形式返回。
优点:兼容性好
缺点:只支持GET请求
Nginx反向代理
HTTP相关
DNS和HTTP都属于应用层。
TCP属于传输层。
IP属于网络层。