CORS策略
...大约 2 分钟
CORS策略
CORS( Cross-Origin Resource Sharing )跨域资源共享:CORS是一种机制,依赖于浏览器的安全策略,通常为了防止恶意网站从另一个域请求资源,从而保护数据的安全
原理:通过HTTP头来允许或者拒绝某个请求
特点
- 安全性:防止恶意网站读取资源
- 灵活性:允许特定的跨域请求,同时保持对其他请求的保护
- 兼容性:实现web应用能安全地与不同域的资源进行交互
1.请求头
`Origin`: 标识请求的来源域。
`Access-Control-Request-Method`: 在预检请求中,表明实际请求所使用的方法。
`Access-Control-Request-Headers`: 在预检请求中,表明实际请求所使用的自定义头。
2.响应头 (Response Headers):
`Access-Control-Allow-Origin`: 指定允许访问资源的源。可以是具体的域,也可以是通配符 *(表示允许所有域)。
`Access-Control-Allow-Methods`: 指定允许的 HTTP 方法,如 GET, POST, PUT, DELETE 等。
`Access-Control-Allow-Headers`: 指定允许的请求头,如 Content-Type, Authorization 等。
`Access-Control-Allow-Credentials`: 指定是否允许发送 Cookie 等凭据。值为 true 表示允许。
`Access-Control-Expose-Headers`: 指定哪些头可以公开给客户端。
`Access-Control-Max-Age`: 指定浏览器在发出预检请求之前可以缓存该响应的秒数。
OPTIONS 预请求
对于某些跨域请求(例如使用了复杂的HTTP方法或自定义头),浏览器会在实际请求之前发送一个OPTINONS预检请求。用来检查服务器是否允许实际请求。
示例
请求头:
OPTIONS /resource HTTP/1.1 Origin: http://example.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-Custom-Header
响应头:
HTTP/1.1 200 OK Access-Control-Allow-Origin: http://example.com Access-Control-Allow-Methods: POST Access-Control-Allow-Headers: X-Custom-Header Access-Control-Max-Age: 86400