跨域请求问题

SpringMVC框架如何解决跨域问题(4.2以上版本)。

什么是跨域
跨域,即跨站HTTP请求(Cross-site HTTP request),指发起请求的资源所在域不同于请求指向资源所在域的HTTP请求。

跨域的应用情景
当使用前后端分离,后端主导的开发方式进行前后端协作开发时,常常有如下情景:
后端开发完毕在服务器上进行部署并给前端API文档。
前端在本地进行开发并向远程服务器上部署的后端发送请求。
在这种开发过程中,如果前端想要一边开发一边测试接口,就需要使用跨域的方式。

通过注解的方式允许跨域
非常简单,我们可以在Controller类或其方法上加@CrossOrigin注解,来使之支持跨域。
举例:

1
2
3
4
5
@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping("/User")
public class UserController {
}

其中origins为CrossOrigin的默认参数,即跨域来源,*即任何来源,也可以是其他域名。即可以以以下形式:

@CrossOrigin(“https://test.com“)
@CrossOrigin(origins=”https://test.com”,maxAge=3600)
该注解用于方法上,写法相同,处理时,SpringMVC会对类上标签和方法上标签进行合并。

=========

4 通过配置文件的方式允许跨域
在web.xml中添加如下配置:

1
2
3
4
<filter-mapping>
       <filter-name>CorsFilter</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>

使用这个Filter即可让整个服务器全局允许跨域。

5一般跨域设置

response.setHeader("Access-Control-Allow-Origin", "*");

发布了16 篇原创文章 · 获赞 24 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章