浏览器未显示 cross-origin 请求的有效响应

Browser not showing valid response for cross-origin request

我提出了跨源请求。浏览器在控制台上显示正确的消息,但也在网络选项卡中显示响应(不应该显示)。

控制台消息:在此处输入图像描述

网络选项卡响应下显示的消息:

在此处输入图片描述

基本上,我有一个名为 getToken 的方法,它向客户端应用程序提供令牌。在提供令牌之前设置 CORS 过滤器并验证用户。

如果用户验证成功,则添加 Access-Control-Allow-Origin header。

User user = userDao.findByUsername(username);

if (!ObjectUtils.isEmpty(user)) {
    System.out.println("user.getDomainName()=="+user.getDomainName());
    if (origin.equalsIgnoreCase(user.getDomainName())) {
        logger.info("Access granted");
        responseToUse.addHeader("Access-Control-Allow-Origin", origin);
        responseToUse.addHeader("Access-Control-Allow-Methods", "GET");
        responseToUse.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(requestToUse, responseToUse);
    }
}

现在,我尝试向 URL 发送请求,认为浏览器不会为此提供响应 url 但浏览器正在发送有效响应,如上图所示。

为什么浏览器没有为 cross-origin 请求发送有效响应?在这种情况下,响应应该为空或无效 json

现在,我试图向 URL 发送请求,认为浏览器不会为该 url 提供响应,但浏览器正在发送有效响应如上图所示。

浏览器 没有发送任何东西,服务器发送了。同源策略不会阻止服务器发送响应,它控制脚本是否可以读取它。如果您的跨源脚本试图读取该响应,它将无法读取。

CORS 不能替代标准身份验证控制。它旨在保护用户免受恶意网站的侵害,而不是保护您的服务器免受用户(如您所见,可以自由阅读响应)的侵害。