美文网首页
SpringMVC跨域

SpringMVC跨域

作者: winyiwin | 来源:发表于2017-10-22 15:16 被阅读0次

开发过程中,常常会遇到跨域访问的问题,下面记录一下常用的解决方案。

  1. 可以从Spring的官方blog截图看到,从spring4.2GA开始,spring提供了一种跨域解决方案。
    Jietu20171022-144319@2x.jpg

使用方法也特别简单,只需在需要跨域访问的方法注解@CrossOrigin就可以实现。

@RestController
@RequestMapping("/account")
public class AccountController {

    @CrossOrigin
    @GetMapping("/{id}")
    public Account retrieve(@PathVariable Long id) {
        // ...
    }

    @DeleteMapping("/{id}")
    public void remove(@PathVariable Long id) {
        // ...
    }
}

如果需要全局设置或当个Controller方法设置则需要在Controller类上注解即可

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)
@RestController
@RequestMapping("/account")
public class AccountController {}

实验一下
如果不加@CrossOrigin,则下面

<script>
        $(function(){
            console.log('--start---')

            $.getJSON("http://localhost:8080/seckill/time/now",{},function(res) {
                if(res) {
                    console.log(res);
                }
            })
        });
</script>

执行的第一次是可以访问到方法的

Jietu20171022-143433@2x.jpg

但是浏览器中返回确是

Jietu20171022-143505@2x.jpg

接下来接着刷新浏览器,则是不会再次进入到后台方法的。
加上注解之后,则可以顺利返回JSON值

加注解截图


res1

不加注解截图


res2

可以看到res1和res2中唯一不同的就是Response Headers
主要是 DefaultCorsProcessor #handleInternal方法帮我们做的Response的处理。

HttpHeaders responseHeaders = response.getHeaders();
responseHeaders.setAccessControlAllowOrigin(allowOrigin);
responseHeaders.add(HttpHeaders.VARY, HttpHeaders.ORIGIN);

资料
MDN
[构建public APIs与CORS]

相关文章

  • SpringMVC跨域

    开发过程中,常常会遇到跨域访问的问题,下面记录一下常用的解决方案。 可以从Spring的官方blog截图看到,从s...

  • springmvc跨域

    1.普通跨域 spring4.2及以上增加注解@CrossOrigin就可以了 2.json跨域 前端会发送两次请...

  • SpringMVC 进行ajax跨域请求访问

    关于 springmvc 3.x 版本对ajax跨域请求访问 ajax 请求后,浏览器出现跨域的问题那么在当前环境...

  • Springmvc支持跨域

    需要spring mvc版本4.2及以上 MVC里面需要配置: mvc:cors的配置处理get请求的跨域和非简单...

  • springboot2.4 跨域问题

    nginx + springboot2.4 跨域问题,添加header、更改springmvc 配置方式,百度搜了...

  • spring boot 跨域问题

    网页端跨域请求403错误! 使用@CrossOrigin 注解 这个大家都知道 但是 必须保证Springmvc版...

  • ajax跨域请求(SpringMVC)

    什么是跨域 不同协议 不同域名 不同子域 不同端口 均为跨域特别的:一个域名和其对应的ip地址也算跨域具体见下表 ...

  • SpringMVC CORS跨域配置

    Spring 4.2 以上的版本支持cors 跨域配置,此处只讲 在xml文件中的配置: path:访问的接口,根...

  • SpringMvc解决js跨域

    原文:https://my.oschina.net/wangnian/blog/689020前言: 跨站 HTTP...

  • 深入跨域问题(3) - 利用 JSONP 解决跨域

    深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域深入跨域问题...

网友评论

      本文标题:SpringMVC跨域

      本文链接:https://www.haomeiwen.com/subject/wawguxtx.html