跨域资源共享(CORS)是一种机制,用于在浏览器和服务器之间确定是否允许在不同源(origin)之间的 Web 应用程序之间进行数据交换。在默认情况下,由于同源策略的限制,浏览器限制了从一个源加载的网页上发起的跨源 HTTP 请求。
has been blocked by CORS policy: No 'Access-control-Allow-0riginheader is present on the requested resource
实际项目中可能会遇到部分接口需要跨域请求,解决跨域问题方法有很多种,此处简单说一下nginx配置方案;
假设我们要实现b域名下以example/开头的url支持跨域访问,我们可以在b域名的ngixn配置文件中添加以下内容:(可根据实际需求将*设置为相关内容)
location ^~ /example/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' '*';
add_header 'Access-Control-Allow-Headers' '*';
}
-
Access-Control-Allow-Origin:这个头部字段用于指定允许访问资源的源。它可以包含一个源的地址,也可以是一个通配符
*
,表示允许任何来源的请求访问资源。例如,如果设置为Access-Control-Allow-Origin: https://example.com
,则只有来自https://example.com
的请求才能访问资源。 -
Access-Control-Allow-Methods:这个头部字段用于指定允许的 HTTP 请求方法。它可以包含一个逗号分隔的方法列表,表示允许的 HTTP 方法。例如,如果设置为
Access-Control-Allow-Methods: GET, POST, PUT
,则只允许使用 GET、POST 和 PUT 方法的请求访问资源。 -
Access-Control-Allow-Headers:这个头部字段用于指定允许的 HTTP 请求标头。它可以包含一个逗号分隔的标头列表,表示允许的 HTTP 标头。例如,如果设置为
Access-Control-Allow-Headers: Content-Type, Authorization
,则只允许包含 Content-Type 和 Authorization 标头的请求访问资源。