sách gpt4 ăn đã đi

PHP下ajax跨域的解决方案之jsonp实例分析

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 29 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

这篇CFSDN的博客文章PHP下ajax跨域的解决方案之jsonp实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了PHP下ajax跨域的解决方案之jsonp。分享给大家供大家参考,具体如下:

首先要说明一下json和jsonp的区别?

json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式.

?
1
2
3
4
5
6
7
của chúng tôi person = {
   "tên" : "Bài kiểm tra" ,
   "tuổi" : "25" ,
   "tình dục" : "nam giới"
};
 
của chúng tôi data = [1, 2, 3, 4, 5];

而jsonp是一种非官方跨域数据交互协议,该协议允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了.

比如我在a.com的网站上引用了b.com的一个b.js,但这样跨域的引用并不会产生错误,说明调用js文件时不受跨域的影响.

?
1
"văn bản/javascript" src= "http://www.b.com/b.js" >

那么我们在b.js里添加如下代码,看看是否能够执行 。

?
1
báo động( "I from b" );

确定是可以执行.

那么如果我们在a.com上自已创建一个js函数,而在b.com下的b.js中调用,那是否可行呢?

a.com下的index.html如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<đầu>
   "UTF-8" >
  
   "văn bản/javascript" >
     chức năng a(data) {
       báo động( "I from a \r\n" + "data:" + data);
     }
  
   "văn bản/javascript" src= "http://www.b.com/b.js" >

b.com下的b.js如下:

?
1
a( "from b" );

上面也是可以执行的,我们可以看到在b.js中的数据确实正确的传到了函数a中.

问题又来了,a.com中创建的函数名与b.js中调用的函数名必须一致,那么如何才能让b.com服务端知道这个函数名,只有通过地址栏来传递了,加上一个callback=函数名来传递。当然callback这个命名可以改,但大家都这么命名,也就约定俗成了.

a.com下的index.html如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<đầu>
   "UTF-8" >
  
   "văn bản/javascript" >
     chức năng a(data) {
       báo động( "uid :" + data.uid + "name :" + data.name);
     }
  
 
  
   "văn bản/javascript" src= "http://www.b.com/b.php?callback=a" >

b.com下的b.php如下:

?
1
2
3
4
5
6
7
8
9
10
11
$gọi lại = ! trống ( $_NHẬN [ 'callback' ]) ? cắt( $_NHẬN [ 'callback' ]): '' ;
 
nếu như (! trống ( $gọi lại )) {
   $dữ liệu = mã hóa json( mảng (
     'chất lỏng' => 1,
     'tên' => '测试' ,
   ));
 
   tiếng vọng "{$callback}({$data});" ;
}

上面也是可以执行的,知道了回调函数名,b.com服务端处理好数据,然后通过字符串拼接输出.

jquery中就已经提供了jsonp的支持,a.com下的index.html如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<đầu>
   "UTF-8" >
  
   "thông tin" >
   "văn bản/javascript" src= "http://www.b.com/jquery.js" >
   "văn bản/javascript" >
   $.ajax({
     Kiểu dữ liệu: "jsonp" ,
     địa chỉ: "http://www.b.com/b.php" ,
     jsonp: "callback" ,
     thành công: chức năng (data) {
       ( ".info" ).text( "uid:" + data.uid + " name:" + data.name);
     }
   });
  

跨域策略限制情况表如下:

URL minh họa 允许通信
http://www.a.com/a.js
http://www.a.com/b.js
同一域名下 允许
http://www.a.com/lab/a.js
http://www.a.com/script/b.js
同一域名下不同文件夹 允许
http://www.a.com:8000/a.js
http://www.a.com/b.js
同一域名,不同端口 不允许
http://www.a.com/a.js
https://www.a.com/b.js
同一域名,不同协议 不允许
http://www.a.com/a.js
http://127.0.0.100/b.js
域名和域名对应ip 不允许
http://www.a.com/a.js
http://script.a.com/b.js
主域相同,子域不同 不允许
http://www.a.com/a.js
http://a.com/b.js
同一域名,不同二级域名(同上) 不允许
http://www.a.com/a.js
http://www.b.com/b.js
不同域名 不允许

Tôi hy vọng bài viết này sẽ hữu ích cho mọi người trong việc lập trình PHP.

原文链接:https://www.cnblogs.com/jkko123/p/6294624.html 。

最后此篇关于PHP下ajax跨域的解决方案之jsonp实例分析的文章就讲到这里了,如果你想了解更多关于PHP下ajax跨域的解决方案之jsonp实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress