跨域解决办法

1:最简单的办法
腾讯这么做了:


解决跨域问题,最简单的方法。
局限性:只能解决跨二级域。及其他。

 

2:jquery的jsonp

预备知识:

      1. 什么是 JSONP JSONP JSON with Padding )是一个非官方的协议,它允许在服务器端集成 Script tags 返回至客户端,通过 javascript callback 的形式实现跨域 访问(这仅仅是 JSONP 简单的实现形式)。

      2. 为什么使用 JSONP :由于 JSON 只是一种含有简单括号结构的纯文本,因此许多通道都可以交换 JSON 消息。因为 同源策略 的限制 ,我们不能在与外部服务器进行通信的时候使用 XMLHttpRequest 。而 JSONP 是一种可以绕过同源策略的方法,即通过使用 JSON < script> 标记相结合的方法,从服务端直接返回可执行的 JavaScript 函数调用或者 JavaScript 对象。

JSONP 如何使用:

      jQuery 1.2 以后,可以使用 ajax 进行跨域请求,其实时就是使用了 JSONP+ 动态插入代码 。 jQuery 会在 window 对象中加载一个全局的函数,当代码插入时函数执行,执行完毕后就会被移除。同时 jQuery 还对非跨域的请求进行了优化,如果这个请求是在同一个域名下,那么他就会像正常的 Ajax 请求一样工作。

原理:

首先在客户端注册 一个 callback, 然后把 callback的名字传给服务器。

此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个 function , function 名字就是传递上来的参数 jsonp.

最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档 ,返回给客户端。

客户端浏览器,解析 script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里 .(动态执行回调函数)。

JSONP 是一种脚本注入 (Script Injection) 行为,所以也有一定的安全隐患。

使用示例代码:

 

 

注意: jquey是不支持 post方式跨域的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值