java - 浏览器未显示跨源请求的有效响应

标签 java spring cors cross-domain same-origin-policy

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

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

enter image description here

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

enter image description here 在此输入图像描述

基本上,我有一个名为 getToken 的方法,它向客户端应用程序提供 token 。在提供 token 之前,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 提供响应,但浏览器正在发送有效响应,如上图所示。

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

最佳答案

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

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

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

关于java - 浏览器未显示跨源请求的有效响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49745982/

相关文章:

java - 使用 @NonNullByDefault 和数组时如何删除 'nullness annotation is redundant' 警告? (Eclipse、空注释)

java - 如何在不继承 'spring-boot-starter-parent' 模块的情况下测试我的 Spring-Boot 应用程序?

java - c3p0 和 hibernate 用户/密码覆盖

python - CORS 在 Django 中不起作用,但设置似乎正确

java - 多线程的 JDBC 问题

java - 在 GWT 中, "[...].java' is removed due to invalid reference(s)”是什么意思?

javascript - CORS:PHP 绕过不起作用

javascript - Flask SocketIO - CORS 问题

java - 递归骑士之旅中变量的正确声明(Java作业)

java - JSR 303 实现给出了 ClassCastException