美文网首页
Spring Boot 跨域访问

Spring Boot 跨域访问

作者: 云师兄 | 来源:发表于2018-10-18 14:26 被阅读34次

    什么是跨域访问

    当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时 ,资源会发起一个跨 域 HTTP请求。比如,站点 http://example-a.com 的某 HTML 页面通过 <img> 的 src 请求 ht甲://example-b.com/ 1mage.jpg。 网络上的许多页面都会加载来 自不同域的 css 样式表 、 图像和脚本等资源 。
    W3C 制定了 CORS 的相关规范,见 https://www.w3.org/TR/cors/。 出于安全考虑,浏览器会限 制从脚本内发起的跨域 HTTP请求。 例如, XMLHtψRequest 和 Fetch 遵循同源策略。 因此,使用 XMLH叩 Request 或 Fetch 的 Web 应用程序只能将 HTTP 请求发送到其自己的域 。 为了改进 Web 应 用程序,开发人员要求浏览器厂商允许跨域请求。

    如何识别是跨域行为

    识别是否具有跨域行为,是由同游、政策决定的。 同游、政策由 N巳tscape公司引入浏览器。 目前, 所有浏览器都实行这个政策 。 所谓“同源”,指的是“ 三个相同” 。

    在 Spring Boot 应用中允许踏域访问

    在微服务的架构里面,由于每个服务都在其自身的源中运行,因此,很容易就会遇到来自多个 来源的客户端Web应用程序来访问服务的问题(即跨域访问) 。 例如,一个浏览器客户端从 “客户” 微服务器访问“客户”,并从“订单”微服务器访问订单历史记录, 这种做法在微服务领域非常 普遍。
    SpringMVC 支持 CORS 的开箱即用的功能 。 主要有两种实现跨域访问的方式 。

    • 方法级别的跨域访问
      Spring Boot 提供了一种简单的声明式方法来实现跨域请求。 以下示例显示如何使用 @CrossOr­igin 注解,来启用允许跨域访问某些接口 。


      example

      其中, origins ="刺 意味着允许所有域名访问(当然,你也可以限定某个域名来访问 ) 。 maxAge = 3600是指有效期为 3600秒。

    • 全局跨域访问
      可以通过使用自定义的 addCorsMappings(CorsRegistry)方法注册 WebMvcConfigurer bean 来定 义全局CORS配置。 用法如下:


      屏幕快照 2018-10-18 下午2.54.39.png

    相关文章

      网友评论

          本文标题:Spring Boot 跨域访问

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