示例 @CrossOrigin注解的使用

示例 @CrossOrigin注解的使用

接下来测试跨域发送请求,再新建一个项目CrossOriginTest,加入所需的jar文件.

项目结构

展开/折叠
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
G:\Desktop\随书源码\Spring+Mybatis企业应用实战(第2版)\codes\03\CrossOriginTest
├─src\
│ └─org\
│ └─fkit\
│ └─controller\
│ └─CrossOriginController.java
└─WebContent\
├─META-INF\
│ └─MANIFEST.MF
└─WEB-INF\
├─content\
│ └─welcome.jsp
├─lib\
│ ├─commons-logging-1.2.jar
│ ├─spring-aop-5.0.1.RELEASE.jar
│ ├─spring-aspects-5.0.1.RELEASE.jar
│ ├─spring-beans-5.0.1.RELEASE.jar
│ ├─spring-context-5.0.1.RELEASE.jar
│ ├─spring-context-indexer-5.0.1.RELEASE.jar
│ ├─spring-context-support-5.0.1.RELEASE.jar
│ ├─spring-core-5.0.1.RELEASE.jar
│ ├─spring-expression-5.0.1.RELEASE.jar
│ ├─spring-instrument-5.0.1.RELEASE.jar
│ ├─spring-jcl-5.0.1.RELEASE.jar
│ ├─spring-jdbc-5.0.1.RELEASE.jar
│ ├─spring-jms-5.0.1.RELEASE.jar
│ ├─spring-messaging-5.0.1.RELEASE.jar
│ ├─spring-orm-5.0.1.RELEASE.jar
│ ├─spring-oxm-5.0.1.RELEASE.jar
│ ├─spring-test-5.0.1.RELEASE.jar
│ ├─spring-tx-5.0.1.RELEASE.jar
│ ├─spring-web-5.0.1.RELEASE.jar
│ ├─spring-webflux-5.0.1.RELEASE.jar
│ ├─spring-webmvc-5.0.1.RELEASE.jar
│ └─spring-websocket-5.0.1.RELEASE.jar
├─springmvc-config.xml
└─web.xml

CrossOriginController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package org.fkit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;

// 允许所有域发送过来的请求
@CrossOrigin(maxAge = 3600)
@Controller
public class CrossOriginController
{
// 只允许origins属性中指定的域的请求
@CrossOrigin(origins = "http://localhost:8080/VariableTest")
@GetMapping(value = "/welcome")
public String welcome()
{
System.out.println("处理跨域请求");
return "welcome";
}
}

CrossOriginController类和welcome方法上都使用了@CrossOrigin注解。 welcome方法接收到跨域请求进行简单处理后,跳转到welcome.jsp

welcome.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试@CrossOrigin注解</title>
</head>
<body>
<br>恭喜您,测试跨域访问成功!
</body>
</html>

此外,还需要在web.xml文件中配置Spring MVC的前端控制器DispatcherServlet,因为每次配置基本一致,此处不再赘述,读者可自行配置。

部署测试

同时部署VariableTestCrossOriginTest两个Web应用,在浏览器中输入如下URL来测试进入VariableTest应用:

1
http://localhost:8080/VariableTest/

然后点击测试@CrossOrigin注解超链接:

1
2
<!-- 跨域请求 -->
<a href="http://localhost:8080/CrossOriginTest/welcome">测试@CrossOrigin注解</a>

向另一个Web应用CrossOriginTest发送跨域请求,CrossOriginTest应用的CrossOriginController控制器的welcome方法将会处理这个跨域请求,控制台输出结果如下:

1
处理跨域请求

同时浏览器上将显示CrossOriginTest应用的welcome.jsp页面。

总结

@CrossOrigin注解可以接收从另一个Web应用发来的跨域请求。