跨域的其他方式

薄洪涛7年前PHP1216

上次向大家介绍了跨域的解决方式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一下);

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

相关文章

Yii2.0行为Behavior的理解

Yii2.0行为Behavior的理解

在说什么叫行为之前,觉得说下行为的作用比较好;使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。通过将行为绑定到一个类,可以使得类具有行为本身所具有的属性和方法;在设计原则中...

谷歌浏览器加载前端资源status=canceled

谷歌浏览器加载前端资源status=canceled

如图,今天在做弹出框(modal中用了iframe)的时候,发现模态框弹出的时候,会有一些前端资源加载被取消,但是也会有加载时间,影响页面的加载速度;然后我尝试用火狐,发现没有这个问题经过一顿goog...

workerMan之心跳检测

workerMan之心跳检测

上次咱们说到,长连接应用必须加心跳检测,避免连接由于上时间没有通讯被断开其实心跳的作用有2个:1、客户端定时给服务器发送数据,防止连接由于长时间没有通讯被断开2、服务端可以通过心跳来判断客户端是否在线...

YII2场景值的使用

开发的时候添加和编辑写在了一个方法里面,上传图片添加的时候需要验证为空,编辑的时候不需要,这时候yii的场景值能够解决这个问题:控制器中$model = new News...

[Err] 1071 - Specified key was too long; max key length is 767 bytes

做数据库sql导入的时候,报错,[Err] 1071 - Specified key was too long; max key length is 767 bytes修正方法set glo...

PHP程序猿食用RabbitMQ方法

消息队列是什么?“消息队列”是在消息的传输过程中保存消息的容器。“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。“消...

发表评论    

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