微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC跨域问题

SpringMVC跨域问题

1.@CrossOrigin注解

Spring 从4.2版本后开始支持 @CrossOrigin 注解实现跨域

  1. String[] origins: 允许来源域名的列表,例如 'www.jd.com',匹配的域名是跨域预请求 Response 头中的 'Access-Control-Aloow_origin' 字段值。不设置确切值时支持所有域名跨域访问。
  2. String[] allowedHeaders: 跨域请求中允许的请求头中的字段类型, 该值对应跨域预请求 Response 头中的 'Access-Control-Allow-Headers' 字段值。 不设置确切值支持所有的header字段(Cache-Controller、Content-Language、Content-Type、Expires、Last-Modified、Pragma)跨域访问。
  3. String[] exposedHeaders: 跨域请求请求头中允许携带的除Cache-Controller、Content-Language、Content-Type、Expires、Last-Modified、Pragma这六个基本字段之外的其他字段信息,对应的是跨域请求 Response 头中的 'Access-control-Expose-Headers'字段值。
  4. RequestMethod[] methods: 跨域HTTP请求中支持的HTTP请求类型(GET、POST...),不指定确切值时认与 Controller 方法中的 methods 字段保持一致。
  5. String allowCredentials: 该值对应的是是跨域请求 Response 头中的 'Access-Control-Allow-Credentials' 字段值。浏览器是否将本域名下的 cookie 信息携带至跨域服务器中。认携带至跨域服务器中,但要实现 cookie 共享还需要前端在 AJAX 请求中打开 withCredentials 属性
  6. long maxAge: 该值对应的是是跨域请求 Response 头中的 'Access-Control-Max-Age' 字段值,表示预检请求响应的缓存持续的最大时间,目的是减少浏览器预检请求/响应交互的数量认值1800s。设置了该值后,浏览器将在设置值的时间段内对该跨域请求不再发起预请求。

2.注解的方式允许跨域

该类都允许跨域

@RestController
@CrossOrigin
public class HController {
}

方法允许跨域

	@RequestMapping(value = "/hello")
    @CrossOrigin
    public String Hello(Model model){
        model.addAttribute("msg","hello");
        return "hello";
    }

2.配置springmvc文件实现全局允许跨域

<!--    设置全局都支持跨域-->
    <mvc:cors>
        <mvc:mapping path="/**"/>
    </mvc:cors>

3.配置 web.xml 文件实现全局允许跨域

 <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐