跨域资源共享(CORS)是一种浏览器机制,允许 Web 应用程序从不同的域访问其资源。在CORS中,URL会被解析为一个origin,即协议、域名和端口号的组合。例如,https://www.example.com:8080
的 origin 是 https://www.example.com:8080
。
当浏览器发送跨域请求时,会先发送一个预检请求(Preflight Request),其中包含了 OPTIONS
方法和一些请求头信息,用于向服务器询问是否允许该请求。服务器在收到预检请求后,会在响应头中返回 Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
等信息,告诉浏览器是否允许跨域请求。
如果服务器返回的 Access-Control-Allow-Origin
为 *
,表示允许所有域的请求。如果返回的是具体的域名,表示只允许该域名的请求。如果服务器不允许该请求,浏览器就会阻止跨域访问并抛出错误。
CORS 机制可以有效地保护 Web 应用程序的安全性,防止恶意脚本对其他域的数据进行访问和篡改。