CORS: 跨域资源共享(Cross-Origin Resource Sharing),是一个浏览器技术的规范,用来解决浏览器的跨域请求。
// 允许所有非同源请求
ctx.set("Access-Control-Allow-Origin", "*");
头部 | 作用 |
---|---|
Access-Control-Allow-Origin | 指示请求的资源能共享给哪些域 |
Access-Control-Allow-Credentials | 指示当请求的凭证标记为TRUE时,是否响应该请求 |
Access-Control-Allow-Headers | 用在对预请求的响应中,指示实际的请求中可以使用哪些HTTP头 |
Access-Control-Allow-Methods | 用在对预请求的响应中,指示哪些HTTP方法允许访问请求的资源 |
Access-Control-Expose-Header | 指示哪些HTTP头的名称能在响应中列出 |
Access-Control-Max-Age | 指示预请求的结果能被缓存多久 |
Access-Control-Request-Header | 用于发起一个预请求,告知服务器正式请求会使用哪些HTTP头 |
Access-Control-Request-Methods | 用于发起一个预请求,告知服务器正式请求会使用哪一种HTTP请求方法 |
Origin | 指示获取资源的请求是从什么域发起的 |
CORS的简单请求:
HTTP方法是下列之一:
- HEAD
- GET
- POST
HTTP头信息不超出以下几种字段:
- Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type(值为application/x-www-form-urlencoded、multipart/form-data、text/plain之一)
其余请求都为复杂请求,复杂请求与简单请求的区别在于,复杂请求会发送两次请求,最先发送一次“预请求”,作为服务端,也需要返回“预回应”作为回应,预请求实际上是对服务器的一种权限请求,只有当预请求成功返回后,实际请求才开始执行。