Spring Cloud Alibaba#33.Gateway处理跨域请求

Spring Cloud Alibaba#33.Gateway处理跨域请求

本文讲解跨域请求到底是怎么回事,在Gateway中如何配置.以及扩展了ART-TEMPLATE的使用办法

笔记对应学习视频:

https://www.itlaoqi.com/chapter/2673.html

本节我们结合前端H5应用学习如何处理微服务的CORS跨域请求

  • 为什么会出现跨域问题

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

  • 什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

当前页面url

被请求页面url

是否跨域

原因

http://www.test.com/

http://www.test.com/index.html

同源(协议、域名、端口号相同)

http://www.test.com/

https://www.test.com/index.html

跨域

协议不同(http/https)

http://www.test.com/

http://www.baidu.com/

跨域

主域名不同(test/baidu)

http://www.test.com/

http://blog.test.com/

跨域

子域名不同(www/blog)

http://www.test.com:8080/

http://www.test.com:7001/

跨域

端口号不同(8080/7001)

  • 非同源限制

【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

【2】无法接触非同源网页的 DOM

【3】无法向非同源地址发送 AJAX 请求

Spring Cloud Alibaba#33.Gateway处理跨域请求

  • 解决方案

CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。只需服务器端设置Access-Control-Allow-Origin

Spring Cloud Alibaba#33.Gateway处理跨域请求

结合Gateway解决跨域问题

Spring Cloud Alibaba#33.Gateway处理跨域请求

  • 2.模板+数据产生HTML插入DOM

    Spring Cloud Alibaba#33.Gateway处理跨域请求