跨域的其他方式

薄洪涛7年前PHP1219

上次向大家介绍了跨域的解决方式jsonp,总感觉差点什么,所以,补充一下,介绍另外一种跨域方式:

比如说,公司内部系统之间,比如ERP和OA之间想要进行数据交互,但是每个系统都有自己的域名,如果想实现数据的共享(使用ajax)就需要使用跨域请求。

html代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function callback(msg) {
        alert(msg)
        }
    </script>
    <script src="http://www.space.com/jsonp/kuayu.php?fn=callback"></script>
 </head>
    <body>
        <input type="button" id="bt" value="跨域请求">
  </body>
</html>

php代码

<?php
$fn = $_GET['fn'];
$str = 'hello ajax';
echo $fn."('$str')";

点击button,我们会发现,弹出msg

换个思路

把html代码换成如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function callback(msg) {
            alert(msg)
        }
        window.onload = function () {
            document.getElementById('bt').onclick = function () {
                var sc = document.createElement('script');
                sc.src = "http://www.space.com/jsonp/kuayu.php?fn=callback";
                document.getElementsByTagName('head')[0].appendChild(sc);
            }
        }
    </script>
</head>
<body>
<input type="button" id="bt" value="跨域请求">
</body>
</html>

php代码不变

其中,php代码中返回的数据并不一定是str,也可以是json格式(比如从数据库中查询出来的记过json_encode一下);

这样就可以实现不同域之间的跨域数据共享

相关文章

大文件之分片上传

大文件之分片上传

    我们知道,无论是nginx还是php,都会对上传文件的大小做限制,今天刚刚做了一个客户端包的管理,要求上传apk或者ipa文件,而且都不小(超出了php...

Yii2.0中事件的使用及理解

Yii2.0中事件的使用及理解

    Yii 三大特性:属性,事件,行为;这篇文章咱们讲讲Yii事件;    事件是代码解耦的一种方式,设计业务流程的...

php用curl模拟post请求接口的坑

php用curl模拟post请求接口的坑

我们的接口是用java实现的,然后我需要用php去调用下接口,请求方式为post,需要传一个数组过去(不是json_encode的那种),之前的时候,是这么写的$post_params =&...

Yii2.0认证及限流

Yii2.0认证及限流

上次搭建了Yii2.0的接口框架后,现在开始搭建认证和限流模块,先说下这两个模块的作用认证:前后端分离,每次请求都是无状态的,及每一次请求服务器不知道你是谁,你有没有登陆;我们就需要做一个认证模块去识...

php redis Hash操作

//为user表中的字段赋值。成功返回1,失败返回0。若user表不存在会先创建表再赋值,若字段已存在会覆盖旧值。 $redis->hSet('user', ...

Yii2使用phpOffice导出excel报错

Yii2使用phpOffice导出excel报错

线上导出excel的时候,是不是出现无法访问,如下图因为导出的数据量比较大,我怀疑是内存溢出,于是增加了内存分配值,发现仍然报错,于是我查了下日志,如下2020-08-14 21:31:12...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。