Spring @RestController默认启用CORS吗?

Ole*_*Ole 1 java rest spring spring-mvc spring-boot

我正在阅读这个Spring安全教程,它提到我们可能会看到2个动态资源请求,因为这个控制器有一个CORS协商:

    @SpringBootApplication
    @RestController
    public class UiApplication {

      @RequestMapping("/resource")
      public Map<String,Object> home() {
        Map<String,Object> model = new HashMap<String,Object>();
        model.put("id", UUID.randomUUID().toString());
        model.put("content", "Hello World");
        return model;
      }

      public static void main(String[] args) {
        SpringApplication.run(UiApplication.class, args);
      }

    }
Run Code Online (Sandbox Code Playgroud)

只是好奇这个@RestController注释是否默认启用CORS?

Sun*_*amy 6

.

您需要添加@CrossOrigin通过标注自己拿到春季CORS支持.

为什么:

默认情况下启用CORS(跨源资源共享)将是一个严重的安全问题.

官方文档中考虑这个例子.

出于安全原因,浏览器禁止对驻留在当前源之外的资源进行AJAX调用.例如,当您在一个标签中检查您的银行帐户时,您可以在另一个标签中打开evil.com网站.来自evil.com的脚本不能使用您的凭据向您的银行API发出AJAX请求(例如,从您的帐户中提取资金!).