es6新特性 为什么只有浏览器(或JS)是有所谓的同源策略?
为什么只有浏览器(或JS)是有所谓的同源策略?
其实我觉得这个问题很奇怪。它必须基于安全考虑。对于B/S架构的软件,浏览器应该绝对保证B端的安全性。不允许任何未经授权的操作,尤其是本地文件读写操作。但这些并不是同源的,甚至是半分钱的关系。能否保证用户的访问安全取决于浏览器本身的安全性,而不取决于您访问的数据源。
现在,恐怕唯一的功能就是给程序员滴眼药水。随着web的发展,对跨域操作的要求越来越高。事实上,这一点已经被曲线所突破,解决这个问题的方法很多,所以我觉得保持这个限制是没有意义的
对于开发者来说,如果第三方API以JSON数据格式被调用和返回,我们离不开API的开发和调用,默认情况下不能直接调用它(例如在Ajax模式下调用),因为会涉及跨域问题。如何解决JSON的跨域调用?那么你必须使用jsonp
!还有一个不精确的理解:带回调的JSON是jsonp。
由于浏览器的同源策略,a.com上的网页无法直接与b.com服务器进行通信。Jsonp用于解决浏览器的跨域数据访问问题。
(<script>标记没有跨域限制)!所以我们可以使用这个功能与第三方进行通信。
JSONP整个工作流程如下:
1,调用方页面使用script标签引用第三方API地址;
2,第三方响应数据是JSON数据包,格式如下:
3,这样浏览器得到的API实际是JS代码后,再调用回调函数,函数的参数是JSON对象,我们可以在回调中。数据处理在CK函数中进行。
JSONP的工作原理是什么?
首先,您需要知道什么是跨域JavaScript。跨域受浏览器的同源策略限制。同源策略要求通信源相同,即协议、域名和端口号完全一致。同源策略将限制两种情况。第一种是不向不同来源的服务发送请求,第二种是不从不同的来源(如文档和cookie)获取BOM和DOM。我们通常通过解决第一个场景来解决跨域问题。有三种常见的方法来解决第一种情况。
1。最常用的CORS
CORS实际上是直接在服务器上配置的,CORS位于请求的响应头中。允许的来源包括网站,这样浏览器就不会截获请求的响应。
访问控制允许原点:*
2。Jsonp
Jsonp使用script标记跨域,并在script的SRC后添加一个回调函数,请求可执行的JavaScript文本。
3. Nginx转发
Nginx转发是一种相对安全的方法,在公司中经常使用。只需将前端请求转发到nginx配置文件中的跨域服务器IP地址即可
sonp(JSON with padding)是JSON的一种“使用模式”,可以用来解决主流浏览器的跨域数据访问问题。由于同源策略,它通常位于Server1中example.com网站的网页不是Server1example.com网站服务器通信,而HTML
es6新特性 javascript同源策略 解决跨域的几种办法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。