文章目录
- 一、什么是跨域
- 二、@CrossOrigin注解是干什么用的
- 三、用法
一、什么是跨域
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
所谓同源是指,域名,协议,端口均相同,举个栗子:
- http://www.123.com/index.html 调用 http://www.123.com/server.PHP (非跨域)
- http://123.com/index.html 调用http://456.com/server.php (主域名不同:123/456,跨域)
- http://www.abc.123.com/index.html 调用 http://www.def.123.com/server.php(子域名不同:abc/def,跨域)
- http://www.123.com:8080/index.html调用http://www.123.com:8081/server.php(端口不同:8080/8081,跨域)
- http://www.123.com/index.html 调用 https://www.123.com/server.php(协议不同:http/https,跨域)
二、@CrossOrigin注解是干什么用的
@CrossOrigin是一个Java注解,用于指示浏览器允许跨域请求资源。在Web应用程序中,如果JavaScript代码试图从一个域名获取来自不同域名的资源,这将会触发浏览器的同源策略,从而导致浏览器阻止跨域请求。使用@CrossOrigin注解可以允许浏览器绕过同源策略,从而允许跨域请求。
@CrossOrigin注解可以用于类级别或方法级别,如果用于类级别,将适用于整个类中的所有方法。它接受一些参数,包括:
- origins:指示允许跨域请求的来源。默认情况下,它是"*",表示允许来自任何来源的跨域请求。
- methods:指示允许的HTTP方法。默认情况下,它包括GET、HEAD和POST。
- maxAge:指示浏览器可以缓存预检请求的时间(以秒为单位)。
- allowedHeaders:指示允许的请求头。
- exposedHeaders:指示可以访问响应头的列表。
总之,使用@CrossOrigin注解可以解决跨域请求的问题,使得Web应用程序能够更灵活地使用跨域资源。
三、用法
在controller层接口上加上@CrossOrigin注解即可。
@CrossOrigin@RequestMapping("/sayHello")public String sayHello() {return userService.sayHello();}