关于跨域问题

作者: 会飞的猪l | 来源:发表于2017-12-13 17:23 被阅读79次

    跨域首先要知道域是什么?域(Domain)是Windows网络中独立运行的单位,域和域之间相互访问,则需要建立信任关系。信任关系是连接在域和域之间的桥梁。当一个域和其他域建立信任关系之后,两个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。有一种简明的说法来解释广域跨域:跨域访问,简单来说就是A网站的js代码试图访问B网站,包括提交内容,获取内容,由于安全问题,跨域访问是被各大浏览器所默认禁止的。
    在广域网环境下,由于浏览器安全限制,网络连接的跨域访问时不被允许的。
    XMLhttprequest也不例外,但有时候跨域访问是必须的。
    跨域问题的产生: 简单来说

    浏览器有同源策略,只能在同端口,同协议,同域名下才能进行数据交互。例如:在公司开发项目时,前后端服务器可能不是一个,因为可能通过webpack,gulp,搭建的开发服务器,就需要解决跨域问题,再例如,大公司数据服务器肯定不止一个,所以跨域问题是必然存在的。
    

    跨域问题的解决
    一:JSONP解决跨域问题
    JSONP是前后端解决跨域方式的一种,原理是通过script的src属性解决跨域问题,因为src属性是不受同源策略的影响,JSONP是资料格式JSON的一个‘使用模式’,可以让网页从别的网域获取资料。
    二:CORS(跨域资源共享)
    CORS跨域资源共享,定义了必须在访问跨域资源时,浏览器和服务器如何沟通,CORS背后的原理就是使用自定义的HTTP头部让浏览器和服务器进行沟通,从而决定响应和请求是成功还是失败。
    三:使用window.name来进行跨域
    window下有一个属性叫name,这个name有一个特征:即在同一个窗口(window)的生命周期li,窗口载入所有页面都有一个都共享一个window.name,每个页面都有对window.name读写的权利。window.name是持久存在窗口载入的页面中。
    四:使用H5的window.postMessage
    postMessage这是H5新增的api,可以使用他向其他window发送消息,无论这个window是同源或者不同源。目前主流浏览器都已经支持该方法。

    相关文章

      网友评论

        本文标题:关于跨域问题

        本文链接:https://www.haomeiwen.com/subject/bikuixtx.html