跨域资源共享,简写为CORS,是浏览器端的一项协议,用于确定从其他域请求一个资源是否安全。本文简要介绍。

CORS一种浏览器端确定在不同域进行HTTP请求是否安全的协议。浏览器会限制JavaScript的跨域请求,如果用fetch()或axios向没有设置CORS的express服务发起请求,会得到以下错误信息:

什么是跨域?

以下请求被认为是跨域的:

换言之,与地址栏中的协议、域名和端口不匹配的请求都是跨域的。

在WEB服务器上需要设置CORS,例如在express中用cors插件。如果发起跨域请求的服务无法更改,唯一的办法就是设置一个代理(译注:在本域后台服务中设置一个代理)。

大部分浏览器会用HTTP的OPTIONS方法(而非GET或POST)发起一个预检请求,检查CORS的headers。为了支持CORS,后台服务需要接收OPTIONS请求,并在response中设置Access-Control-Allow-Origin的header。

一般是使用npm包cors,但以下示例中,只需要简单的设置response的header,就能支持跨域请求,这在任何WEB服务框架中都非常轻松实现。