CORS允许来源限制不会导致服务器拒绝请求(仍然可以在浏览器中访问该站点)

Jan*_*yne 4 java spring spring-mvc cors spring-boot

我正在使用Spring Boot v1.5.1,似乎我对CORS起源的限制不起作用.

我的application.properties文件包含以下行(ref1 ref2).

endpoints.cors.allowed-origins=http://mydomain.io
Run Code Online (Sandbox Code Playgroud)

我的REST控制器如下所示.

@RestController
@CrossOrigin
@RequestMapping("/api/car")
public class CarCtrl {
  @Autowired
  private CarService carService;

  @GetMapping
  public Car get() {
    return carService.getLatest();
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我打开浏览器并输入时,http://localhost:8080/api/car我仍然可以访问REST端点.

我也尝试按如下方式更改我的注释,但这不起作用.

@CrossOrigin("${endpoints.cors.allowed-origins}")
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?

请注意,我没有WebMvcConfigurerAdapter像这篇文章那样使用.我是否真的需要扩展此类以明确控制原点?我认为@CrossOrigin除了属性文件设置之外的注释将能够控制允许的原点(而不是必须以编程方式执行).

sid*_*ker 8

但是,当我打开浏览器并键入http:// localhost:8080/api/car时,我仍然可以访问REST端点.

CORS允许来源设置不会阻止您直接在浏览器中打开URL.

浏览器仅对运行在使用XHR或Fetch或jQuery $.ajax(…)或其他任何跨域请求的Web应用程序中运行的JavaScript代码施加CORS限制.

因此,CORS不是一种阻止用户直接导航到URL的方法,也不是阻止非Web应用程序客户端curl或Postman 等访问URL的方法.