在回答上面的跨域问题之前,我们先了解一下上面是同源这个概念
同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。相同的协议+域名+端口,我们可以确定是同源的。同源直接可以互相访问相互间的资源。
那什么是跨域呢?
跨域,域名不同或者端口不同,协议不同,这些只要有一个不同就属于跨域。跨域不能随意访问不同域里面的资源的,比如分布式工程,工程A是不能访问工程B的资源的。
那如果项目不得不要进行跨域访问呢?所以就需要跨域的解决方法
方法:jsonp 和 httpclient
jsonp的跨域原理:
js是一种动态语言,不能单独使用,通常在页面与jsp一起使用,js的<script>标签的src是具有跨域功能的,通过这个src标签可以实现跨域问题。
原理:script标签的src通过跨域加载到资源之后,需要将资源解析成它自己所需要的js脚,只要这样才可以将数据返回。
所以我们必须将获取的资源转换成js脚本,才可以让src访问到资源后,将资源返回。
或者直接异步 ajax 进行实现,dataType 一定为jsonp 格式,否则无效
httpClient的方式实现跨域访问:比如php 语言脚本,或者其他的客户端脚本语言都行,设置response 返回头进行相关的访问,Access-Control-Allow-Origin 设置为 "*" 该值