【问题标题】:spring security CORS filter allows requests without the "Origin" headerspring security CORS 过滤器允许没有“Origin”标头的请求
【发布时间】:2018-08-19 22:08:54
【问题描述】:

我正在尝试将 Spring Security CORS 过滤器添加到 REST API。

我已经成功配置了 CORS 过滤器,如果我向我的请求中添加了一个无效的“Origin”标头,该请求将被正确拒绝,并显示 403 - 禁止 http 状态。

问题是,如果我发送一个没有“Origin”标头的请求,CORS 过滤器会对其进行授权,并且响应代码是 http 200。

  1. CORS 机制就是这样设计的吗?
  2. 我想要实现的目标是否正确,即拒绝所有没有“Origin”标头的请求?
  3. 有没有办法告诉 Spring Security CORS 过滤器拒绝此类请求?

【问题讨论】:

  • CORS 是浏览器端的限制。没有Origin: 的请求通常来自非浏览器客户端,它们可以发送他们想要的任何内容。他们可以轻松发送任何来源。你想防止什么?
  • 好的,感谢您为我指明了正确的方向,但这是否意味着向 REST API 添加 CORS 过滤器没有意义?
  • 仅当您想允许跨域 Javascript 访问时。

标签: java spring security cors


【解决方案1】:

正如 SLaks 在他的 cmets 中描述的那样,CORS 标头由浏览器客户端自动添加和填充,CORS 过滤仅在这种情况下才有意义。

当请求来自“非浏览器”客户端时,任何内容都可以在 Origin: 标头中传递,这使得强制客户端添加标头和服务器拒绝没有它的请求毫无意义。

因此问题的答案是:

  1. 是的
  2. 不,这样做没有意义
  3. 没有

【讨论】:

    猜你喜欢
    • 2016-01-31
    • 2019-06-14
    • 2013-10-27
    • 2019-02-18
    • 1970-01-01
    • 2020-12-27
    • 2015-11-06
    • 2019-04-12
    • 2013-12-09
    相关资源
    最近更新 更多