同源策略
概念:

    同源策略是浏览器的一个平安性能,不同源的网页脚本在没有明确受权的状况下,不能读写对方资源,所谓同源是指"协定+域名+端口"三者雷同。

跨域
概念:

    应用AJAX技术(XMLHttpRequest 对象),从一个网页去申请另一个网页资源时,违反浏览器同源策略限度,引起的平安问题,称为跨域。 

①域名:

主域名不同 http://www.baidu.com/index.html –>http://www.sina.com/test.js
子域名不同 http://www.666.baidu.com/inde... –>http://www.555.baidu.com/test.js
域名和IP地址 http://www.baidu.com/index.html –>http://180.149.132.47/test.js
②端口:

http://www.baidu.com:8080/ind...–> http://www.baidu.com:8081/tes...
③协定:

http://www.baidu.com:8080/ind...–> https://www.baidu.com:8080/te...
备注:

localhost和127.0.0.1尽管都指向本机,但也属于跨域
解决方案
①JSONP技术

利用HTML的<script>标签天生能够跨域这一特点,用其加载另一个域的JSON数据,加载实现后会主动运行一个回调函数告诉调用者。此过程须要另一个域的服务端反对,所以这种形式实现的跨域并不是任意的。前端培训
该协定的一个要点就是容许用户传递一个callback参数给服务端,而后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就能够随便定制本人的函数来主动解决返回数据了。
弊病 : JSONP仅仅用于get申请。

<body>

<button class="button">获取数据</button><script>    let btnEle = document.querySelector('.button')    btnEle.addEventListener('click', function () {        getUserList('http://localhost:8088/api/list')    })    function getUserList(url) {        const scriptEle = document.createElement('script')        scriptEle.setAttribute('src', url)        document.body.appendChild(scriptEle)    }    function callback(result) {        console.log(result)    }</script>

</body>
②跨域资源共享CORS

    CORS是一个W3C规范,全称是"跨域资源共享"(Cross-origin resource )。    它容许浏览器向跨源服务器,收回XMLHttpRequest申请,从而克服了AJAX只能同源应用sharing的限度。

response.setHeader('Access-Control-Allow-Origin', '*')
③代理服务器技术

    vue3为例配置 vue.config.js