Skip to content
2012 edited this page Jul 20, 2020 · 2 revisions

CORS,也叫跨域资源共享,是浏览器的一种安全策略(curl/wget 没有),表示当一个资源从当前资源域名访问另外一个资源域名时,浏览器会发起跨域请求;仅针对脚本限制,而 img 标签是不受限制的

预习概念

  • 防止点击劫持攻击
    • x-frame-options: deny/sameorigin
  • DoS 攻击
    • 限制特定 ip 访问
  • 中间人攻击(MITM)
    • 为使用 https
  • sql 注入/os 注入
    • 使用参数化查询
    • 单引号转换
  • 跨站脚本攻击 xss
    • 设置 cookie 的 httponly 可以防止该攻击
    • 对输入内容进行校验、转义
  • 垮站请求伪造 csrf
    • 检查 Referer 首部字段
    • 添加 Token 验证
    • 输入验证码
  • 预检请求
  • 简单请求

为验证服务器是否支持跨域请求发起或是否要携带认证信息,通常情况下浏览器会发起预检请求进行验证;当然也包含一些简单的方法不需要验证,可以直接请求服务器操作,这类请求称为简单请求

简单请求

满足简单请求的方法或条件:

  • GET/POST/HEAD
  • Accept, Accept Language, Content-Language, Content-Type(application/x-www-form-urlencoded or multipart/form-data or text/plain)

预检请求

除了简单请求的,就是预检请求;预检请求会发起一个 OPTIONS 方法的预请求,这个时候浏览器会带上 origin 请求头信息。

跨域请求头字段:

  • Origin: 表明预检请求或实际请求的源站。
  • Access-Control-Request-Method: 将实际请求所使用的 HTTP 方法告诉服务器。
  • Access-Control-Request-Headers: 将实际请求所携带的首部字段告诉服务器。

跨域响应头字段:

  • Access-Control-Allow-Origin: 允许来自所有域的请求.
  • Access-Control-Expose-Headers: 让服务器把允许浏览器访问的头放入白名单
  • Access-Control-Max-Age: 指定了 preflight 请求的结果能够被缓存多久
  • Access-Control-Allow-Credentials: 指定了实际的请求是否可以使用 credentials.
  • Access-Control-Allow-Methods: 指明了实际请求所允许使用的 HTTP 方法。
  • Access-Control-Allow-Headers: 指明了实际请求中允许携带的首部字段。

JS

  1. 作用域
  2. 闭包
  3. 原型(链)
  4. 模块
  5. 位操作符
  6. 事件循环
  7. eval

CSS

  1. float
  2. BFC
  3. position
  4. flex
  5. grid

DOM

  1. DOM
  2. how browser works

Node.js

  1. Stream
  2. Timers
  3. Child Processes
  4. HTTP
  5. File System

react

  1. 生命周期
  2. setState
  3. hook

git

  1. git 基础命令
  2. git rebase 理解
  3. git bisect
  4. git commit
  5. git hook

设计模式

  1. 策略模式
  2. ...

TCP/IP 协议

  1. HTTP/1.x
  2. HTTP/2
  3. SSL/TLS
  4. TCP
  5. DNS
  6. HTTP Cache
  7. CORS
  8. http status code

linux(shell)知识点

  1. bashrc vs profile
  2. vim
  3. shell基本语法
  4. shell 知识误区
  5. shell命令
  6. 鸟哥的Linux私房菜:基础学习篇
  7. sudo vs su

Clone this wiki locally