web安全相关(未完结)

220 阅读1分钟

关于跨域

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属于网络层。