Skip to content

CORS 是如何实现跨域的?

Posted on:2024年8月14日 at 12:22

CORS(Cross-Origin Resource Sharing)是一种用于实现跨域请求的机制,允许浏览器和服务器之间在不同源之间共享资源。CORS 通过在 HTTP 头部添加特定的字段来控制跨域访问。以下是 CORS 的工作原理及实现细节:

1. CORS 工作原理

1.1 浏览器发起跨域请求

当浏览器发起一个跨域请求时,它会先发送一个预检请求(preflight request),以检查服务器是否允许实际请求。这是通过发送一个 OPTIONS 请求来实现的,主要用于确认目标服务器是否允许跨域请求。

1.2 服务器响应

服务器需要在响应中包含适当的 CORS 头部,以指示是否允许跨域请求。主要的 CORS 头部包括:

1.3 客户端处理响应

2. 请求类型

2.1 简单请求

满足以下条件的请求被认为是简单请求,不需要预检请求:

2.2 复杂请求

不符合简单请求条件的请求会被认为是复杂请求,需要先发送预检请求。复杂请求包括:

3. 服务器设置

3.1 响应 CORS 头部

服务器需要在响应中包含必要的 CORS 头部。例如:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type, Authorization

3.2 处理预检请求

对于预检请求,服务器需要回应适当的 CORS 头部:

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Max-Age: 3600

4. CORS 的安全性

原文转自:https://fe.ecool.fun/topic/ce6357ce-cce3-4ccc-90d8-7fe7704f3312