首页IT科技js跨域获取数据的方式(JSONP解决跨域问题)

js跨域获取数据的方式(JSONP解决跨域问题)

时间2025-08-05 00:55:43分类IT科技浏览5025
导读:一、什么是同源...

一            、什么是同源

概念:如果两个页面的协议                  、域名和端口都相同            ,则这两个页面具有相同的源            。

 二      、什么是同源策略

概念:是浏览器提供的一个安全功能                  。

 三            、什么是跨域

概念:同源指的是两个URL的协议                  、域名      、端口号一致                  ,反之则是跨域      。

出现跨域的根本原因:浏览器的同源策略不允许非同源的URL之间进行资源的交互      。

例如下面的情况:

四      、浏览器如何对跨域请求进行拦截

 五                  、如何实现跨域数据请求

方式有JSONP和CORS两种      ,JSONP兼容性好      ,但是只支持GET数据请求                  ,不支持POST请求;CORS不兼容某些低版本的浏览器但是它支持GET和POST请求                  。下面主要讲JSONP的内容            。

六            、JSONP的概念

 JSONP的实现原理:由于浏览器收同源策略的限制            ,网页无法通过Ajax请求非同源的接口数据      ,但是script标签不受浏览器同源策略的影响                  ,可以通过src属性请求非同源js脚本      。简而言之            ,JSONP的实现原理就是通过<script>标签的src属性,请求跨域的数据接口                  ,并通过函数调用的形式                  ,接收跨域接口响应回来的数据                  。

七      、剖析JSONP的实现原理

我们先来看这个代码:

<body> <script> function success(data) { console.log(data); } </script> <script> var data = { name: sy, age: 18 }; success(data); </script> </body>

输出结果为:

说明所有的script标签都是共享内容的            。

八                  、实现一个简单的JSONP数据请求

<body> <script> function success(data) { console.log(JSONP响应回来的数据); console.log(data); } </script> //这里返回的是一个函数调用 <script src="http://www.liulongbin.top:3006/api/jsonp?callback=success&name=sy&age=18"> </script> </body>

输出结果为:

 九            、JSONP的缺陷及注意事项

缺点:JSONP只支持GET数据请求,不支持POST请求

注意事项:JSONP和Ajax之间没有任何关系            ,不能把JSONP请求数据的方式叫做Ajax                  ,因为JSONP没有用到XMLHttpRequest这个对象。

十、Jquery中的JSONP函数

(一)采用$.ajax()函数发起JSONP请求

 代码如下:

<body> <script> $(function() { $.ajax({ url: http://www.liulongbin.top:3006/api/jsonp?name=sy&age=18, dataType: jsonp, success: function(res) { console.log(res); } }) }) </script> </body>

 输出结果:

 自定义参数和回调函数名称

看下面的代码:

<body> <script> function sy() { console.log(heiheihie); } </script> <script> $(function() { $.ajax({ url: http://www.liulongbin.top:3006/api/jsonp?name=sy&age=18, dataType: jsonp, jsonpCallback: sy, success: function(res) { console.log(res); } }) }) </script> </body>

 输出结果:

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
安卓糸统怎么升级最新版本(三种安卓手机系统升级方法教程)