跨域解决办法

前端之家收集整理的这篇文章主要介绍了跨域解决办法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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方式跨域的。

猜你在找的Json相关文章