我们需要先明白一个概念,什么是跨域?比如a.com下面的a.js文件调用b.com中的b.js文件是就发生了跨域行为。浏览器出于对同源策略的保护会限制这种行为,当然也有解决的方案,大家可以使用搜索引擎搜索。而今天我们讲的php是服务器端语言,它是区别于浏览器的,属于后端语言。它的跨域引用文件是如何实现的呢,本文提供一些方法,希望对需要的同学有所帮助。
首先我们假设这两台主机的后台语言都是php,大家可以选择两台线上的环境,或者1台线上1台本地环境,或者使用虚拟机(这个不是我们今天重点内容,请自行解决)。分别在两个环境创建a.php,b.php,代码如下:
a.php:
<?php echo '我是老A,呼叫老B,听到请回答:<br>'; /* 以下是源服务器的代码*/ /* 以上是源服务器的代码*/ ?>
b.php:
<?php header("Content-type:text/html;charset=utf-8"); echo "我是老B,叫我干嘛????";?>
分别使用浏览器访问a.php,b.php查看未设置之前的效果:
方法一:打开a.php,输入以下代码:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $str = file_get_contents($file_path); $str = str_replace("\r\n","<br />",$str); echo $str; /* 以上是源服务器的代码*/ ?>
重新访问a.php,查看效果:
方法二:修改a.php,粘贴以下代码:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $fp = fopen($file_path,"r"); $str = ""; $buffer = 1024; while(!feof($fp)){ $str .= fread($fp,$buffer); } $str = str_replace("\r\n","<br />",$str); echo $str; /* 以上是源服务器的代码*/ ?>
重新访问a.php,查看效果:
方法三:修改a.php ,粘贴以下代码:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $file_arr = file($file_path); for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容 echo $file_arr[$i]."<br />"; } /* 以上是源服务器的代码*/ ?>
方法四:修改a.php,调整如下代码:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $url = "此处输入b.php的访问地址"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout) $contents = curl_exec($ch); curl_close($ch); echo $contents; /* 以上是源服务器的代码*/ ?>
注意:使用curl的时候请确保php开启了curl模块
以上是php如何跨域引入文件的详细内容。更多信息请关注PHP中文网其他相关文章!