跨域资源共享(CORS)详解
· 阅读需 7 分钟
CORS(Cross-Origin Resource Sharing,跨域资源共享) 是一种浏览器安全机制,允许或限制从不同来源(域名、协议或端口)加载资源的网页进行交互。它解决了浏览器的同源策略(Same-Origin Policy, SOP)限制,允许受控的跨域请求,以保护用户数据的安全。
背景
浏览器的同源策略 规定,网页只能访问与其自身同源(即相同域名、协议和端口)的资源,防止恶意网站获取其他域的数据。这虽然有效提升了安全性,但限制了现代 Web 应用中常见的跨域交互需求,如 API 请求、跨域文件加载等。 CORS 允许在安全的情况下进行跨域请求,提供了一种松散的跨源资源访问机制,使得服务器可以指定哪些外部源可 以访问其资源。
CORS 的基本原理
- 简单请求(Simple Request) :
当浏览器向不同来源的服务器发出跨域请求时,如果满足一定条件,这个请求被称为简单请求 。例如,GET 或 POST 请求,且请求头为
Content-Type: text/plain
,这些请求可以直接发送。响应头 : 服务器通过在响应头中设置CORS 相关的头 ,告知浏览器是否允许这个跨域请求。重要的 CORS 响应头 :
Access-Control-Allow-Origin
: 指定允许哪些来源访问资源。可以是具体的域名,也可以是*
(表示允许任何来源)。
Access-Control-Allow-Origin: https://example.com
请求示例 :
GET /api/data HTTP/1.1
Origin: https://client.com
响应示例 :
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.com
Content-Type: application/json