本菜鸡最近写页面请求数据报如下错误。无法加载https://...:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问来源“http://127.0.0.1:7070”。了解原因后得知是跨域请求导致的。了解了跨域和同源策略后,写了个demo来玩玩说说跨域。要理解跨域,首先要理解浏览器同源策略,然后下来搬运一些大神总结下什么是同源策略?同源策略/SOP(Sameoriginpolicy)是Netscape于1995年向浏览器引入的约定。它是浏览器最核心、最基本的安全功能。没有同源策略,浏览器容易受到XSS、CSFR等攻击。所谓同源,就是“协议+域名+端口”是相同的,即使两个不同的域名指向同一个IP地址,也不是同源的。同源策略限制了以下行为:1.无法读取Cookie、LocalStorage和IndexDB2.无法获取DOM和Js对象3.无法发送AJAX请求假设没有同源策略,那么我在A下的cookie网站可以是任何网站获取;那么这个网站的拥有者就可以使用我的cookie(也就是我的身份)在A网站下进行操作。同源策略可以说是Web前端安全的基石。如果没有同源策略,浏览器将毫无安全可言。同源策略的限制非常严格,但是在实际场景中,确实有很多地方需要突破同源策略的限制,也就是我们常说的跨域。跨域的方法有很多(比如接下来要玩的jsonp跨域,还有cors跨域资源共享,反向代理等)。使用jsonp跨域由于同源策略,一般来说,位于server1.example.com的网页无法与server1.example.com以外的服务器通信,HTML的元素的这种开放策略,网页可以获取其他来源动态生成的JSON数据,这种使用模式称为JSONP。使用JSONP捕获的数据不是JSON,而是任意JavaScript,使用JavaScript解释器执行,而不是使用JSON解析器解析。代码示例callback=handleResponse'document.body.insertBefore(script,document.body.firstChild)这里的callback回调函数很重要,在body中动态添加的script标签可以使用加载的文件与html下的其他js文件共享一个文件全局范围。也就是说,
