在Angular 9和Spring Boot 2中请求的资源上没有'Access-Control-Allow-Origin'标头是由于浏览器的同源策略所导致的。同源策略是一种安全机制,它限制了一个网页中的脚本如何与另一个源的资源进行交互。
当浏览器发起跨域请求时,即请求的资源与当前页面的域名、协议或端口不一致时,浏览器会发送一个预检请求(OPTIONS请求)到服务器,检查服务器是否允许跨域访问。如果服务器没有正确配置响应头,包括'Access-Control-Allow-Origin'标头,浏览器会拒绝该跨域请求。
解决这个问题的方法是在服务器端配置响应头,允许特定的域名进行跨域访问。在Spring Boot中,可以通过添加一个过滤器或拦截器来实现。以下是一个示例:
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Access-Control-Allow-Origin", "http://your-angular-app-domain.com");
httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(request, response);
}
// 其他方法省略...
}
在上述示例中,我们通过设置"Access-Control-Allow-Origin"标头来指定允许跨域访问的域名,可以使用通配符"*"来允许所有域名访问。"Access-Control-Allow-Methods"标头用于指定允许的请求方法,"Access-Control-Allow-Headers"标头用于指定允许的请求头,"Access-Control-Allow-Credentials"标头用于指定是否允许发送身份凭证(如cookies)。
另外,为了更好地管理和部署云计算资源,腾讯云提供了一系列相关产品和服务。以下是一些推荐的腾讯云产品和产品介绍链接地址:
请注意,以上仅为示例,腾讯云还提供了更多丰富的云计算产品和服务,可根据具体需求进行选择和使用。
领取专属 10元无门槛券
手把手带您无忧上云