什么叫跨域
概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。
通过jsonp跨域
维基百科的定义是:JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。
但是这种方法只支持Get请求,不支持post请求
通过CORS跨域
CORS是一个W3C标准,全称是”跨域资源共享”,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
首先先看一个场景,一般情况下没有设置跨域访问时,在Vue中定义了方法,触发这个方法时通过axios执行post请求时:
会报以下错误
这时候可以通过配置cors的方式进行跨域访问,在Spring 4.2版本支持了CORS的方式
配置的方式
1234567<mvc:cors><mvc:mapping path="/**"allowed-origins="*"allowed-methods="POST, GET, OPTIONS, DELETE, PUT"allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"allow-credentials="true" /></mvc:cors>注解的方式(@CrossOrigin)
1@CrossOrigin(origins = "*", maxAge = 3600)
这时候再跑post请求就成功了