每日一题系列:解决跨域都有哪些手段?

  1. 通过jsonp跨域
    由于浏览器同源策略是允许类似script有src属性的标签这样的跨域资源嵌套的,所以script标签的资源不受同源策略的影响

  2. document.domin
    两个域名必须属于同一基础域名,并且所有的协议端口完全一致,否则无法跨域

  3. iframe、hash
    父页面向子页面传输数据:将要传递的数据添加到子页面的url的hash值上,子页面通过location.hash并添加定时器实时地动态父页面传来地数据;子页面向父页面传输数据:利用window.name的特性,以及页面重新加载但当前页面的name值不变,即使换了一个页面,需要三个页面配合使用。一个应用页面,一个数据页面,一个代理文件。代理文件一般是一个没有任何内容的html页面,需要和应用页面在同一域下。将数据页面的窗口换成代理页面,代理页面通过window.name获取数据页面留下的数据,应用页面在访问和它同源的代理页面获取数据,就完成了跨越。

  4. CORS(cross-origin-resource-sharing)
    在服务器端设置的,不需要客户端进行操作。cors背后的思想是使用自定义的http头部让浏览器和服务器进行沟通,从而决定请求或响应是否应该成功还是应该失败。浏览器向服务器发送请求,如果服务器认为这个请求可以接收,就在Access-Control-Allow-Origin头部中会发相同的源信息(如果是公共资源可以会发*);如果没有这个头部或者有这个头部但信息源不匹配,浏览器就会驳回请求。正常情况下,浏览器会处理请求(请求和响应都不包含cookie信息)

  5. 服务器跨域、服务器中转代理
    前端向本地服务器发送请求,本地服务器代替前端在向服务器接口发送请求进行服务器间通信,本地服务器是个中转站的角色,在将响应的数据返回给前端。

  6. 其他一些方式
    postMessage和onMessage
    nodejs中间件代理跨域
    WebSocket协议跨域
    link、script、img、background:url()、@font-face()等均不受跨域限制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值