在Spring Boot中使用@CrossOrigin

时间:2015-10-21 11:59:57

标签: spring spring-mvc spring-boot cors

我使用最新的Spring Boot(1.2.7.RELEASE)。我想使用包org.springframework.web.bind.annotation中的@CrossOrigin注释,如Spring文档中的CORS Support部分所述。

我认为我已经拥有所有必需的依赖项(通过Spring Boot默认值),但这很令人困惑:找不到CrossOrigin,即使来自同一个包的RestController之类的东西也是如此作品!

enter image description here

Error:(8, 47) java: cannot find symbol
  symbol:   class CrossOrigin
  location: package org.springframework.web.bind.annotation

发生了什么?是否已从更高版本的Spring-MVC中删除CrossOrigin,或者我是否遗漏了某些依赖项?

的pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.7.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2 个答案:

答案 0 :(得分:5)

好吧,看起来最新的Spring Boot版本1.2.7.RELEASE目前还太老了,不能拥有带有CrossOrigin的Spring MVC版本。 (Spring Boot 1.2.7 uses Spring version 4.1.8)。

我更新到最新的Spring Boot 1.3候选版本(1.3.0.RC1)并且它可以工作:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.RC1</version>
</parent>

还需要在spring-milestones中指定pom.xml存储库才能使用非发布版本。

<repositories>
    <repository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
    </repository>
</repositories>

更新:覆盖Spring版本

正如StéphaneNic​​oll指出的那样,使用Spring 4.2.2类(例如CrossOrigin)的一种更简单的方法是:

<properties> 
    <!-- ... -->
    <spring.version>4.2.2.RELEASE</spring.version>
</properties>

答案 1 :(得分:0)

@CrossOrigin注释用于为跨域提供支持,

即只有来自不同领域的东西,我们也可以访问该服务

默认情况下是真的。

我们也可以从跨域访问服务。