
正文
php跨域数据传递 php curl跨域
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP如何实现跨域传递参数
通常是用json,你可以用php的函数json_encode(),转换为json格式,然后输出进行传递
相关问答
Q1: PHP跨域上传的几种方法
方法一:
文件夹:/home/web/attachments
虚拟二级目录到/home/web/zxsv/下(支持同局域网的服务器)
这样多个子域名进行上传的设计时,只需要attachments目录映射为相关的域名的二级目录,这样就可实现多个子域名共享一个附件服务器了,这种方法最好是用局域网中的附件服务器,这样流量是分开的,当然访问附件的域名是apache,ngixn,IIS等的虚拟二级目录就不说了,好处是现有程序不做任何修改,唯一坏处就是两台服务器必须在一个局域网中,当然你用单台也就没这个问题了
方法二:FTP同步更新
PHP是支持FTP的,给个FTP类里面(不是我写的,只是加了个建立多级目录),自己看着办吧,上传后调用FTP类,同步到FTP服务器中,好处是现有程序只需要在上传那段加上FTP上传就行了,坏处就是一定要支持FTP
?php
$ftp=new Ftp;
//print_r($ftp-nlist(”"));
$ftp-makedir(”3″);
//$ftp-put(”comment.php”,”1.txt”);
$ftp-bye();
//R FTP 处理;
class ftp {
var $ftpUrl = ‘’;
var $ftpUser = ‘zxsv’;
var $ftpPass = ‘111111′;
var $ftpDir = ‘/zxsv/’;
var $ftpR = ”; //R ftp资源;
var $status = ”;
//R 1:成功;2:无法连接ftp;3:用户错误;
function ftp() {
if ($this-ftpR = ftp_connect($this-ftpUrl, 21)) {
if (ftp_login($this-ftpR, $this-ftpUser, $this-ftpPass)) {
if (!empty($this-ftpDir)) {
ftp_chdir($this-ftpR, $this-ftpDir);
}
ftp_pasv($this-ftpR, true);//R 启用被动模式;
$status = 1;
} else {
$status = 3;
}
} else {
$status = 2;
}
}
//R 切换目录;
function cd($dir) {
return ftp_chdir($this-ftpR, $dir);
}
//建立目录
function mkdir($dir){
return ftp_mkdir($this-ftpR, $dir);
}
function makedir($dir) {
if(!$dir) return 0;
$dir = str_replace( “\\”, “/”, $dir );
$mdir = “”;
foreach(explode( “/”, $dir ) as $val ) {
$mdir .= $val.”/”;
if( $val == “..” || $val == “.” ) continue;
if(!@mkdir($mdir)){
echo “创建目录 [".$mdir."]失败.”;
//exit;
}
}
return true;
}
//删除目录
function rmdir($dir){
return ftp_rmdir($this-ftpR, $dir);
}
//R 返回当前路劲;
function pwd() {
return ftp_pwd($this-ftpR);
}
//R 上传文件;
function put($localFile, $remoteFile = ”) {
if ($remoteFile == ”) {
$remoteFile = end(explode(’/', $localFile));
}
$res = ftp_nb_put($this-ftpR, $remoteFile, $localFile, FTP_BINARY);
print_r($res);
while ($res == FTP_MOREDATA) {
$res = ftp_nb_continue($this-ftpR);
}
if ($res == FTP_FINISHED) {
return true;
} elseif ($res == FTP_FAILED) {
return false;
}
}
//R 下载文件;
function get($remoteFile, $localFile = ”) {
if ($localFile == ”) {
$localFile = end(explode(’/', $remoteFile));
}
if (ftp_get($this-ftpR, $localFile, $remoteFile, FTP_BINARY)) {
$flag = true;
} else {
$flag = false;
}
return $flag;
}
//R 文件大小;
function size($file) {
return ftp_size($this-ftpR, $file);
}
//R 文件是否存在;
function isFile($file) {
if ($this-size($file) = 0) {
return true;
} else {
return false;
}
}
//R 文件时间
function fileTime($file) {
return ftp_mdtm($this-ftpR, $file);
}
//R 删除文件;
function unlink($file) {
return ftp_delete($this-ftpR, $file);
}
function nlist($dir = ‘/service/resource/’) {
return ftp_nlist($this-ftpR, $dir);
}
//R 关闭连接;
function bye() {
return ftp_close($this-ftpR);
}
}
?
Q2: 跨域问题解决方法
跨域?他是浏览器的 同源策略 造成的php跨域数据传递,是浏览器对javascript施加的安全限制。所谓同源是指:域名、协议、端口均相同。
解决
原理:利用标签具有可跨域的特性,可实现跨域访问接口,需要后端的支持。
服务器在收到请求后,解析参数,计算返还数据,输出messagetow(data)字符串。
缺点:只能发送get请求,无法访问服务器的响应文本(单向请求),即只能获取数据不能改数据。
通过ajax请求不同域的实现,底层不是靠XmlHttpRequest而是script,所以不要被这个方法给迷惑了。
在ajax请求中类型如果是type是get post,其实内部都只会用get,因为其跨域的原理就是用的动态加载script的src,所以php跨域数据传递我们只能把参数通过url的方式传递
其实jquery内部会转化成
然后动态加载;action=aaron"
;action=aaron"script type="text/javascript" src=" "/script
;action=aaron"
;action=aaron"
Cross-Origin Resource Sharing(CORS)跨域资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,确保安全的跨域数据传输。现代浏览器使用CORS在API容器如XMLHttpRequest来减少HTTP请求的风险来源。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。服务器一般需要增加如下响应头的一种或几种:
跨域请求默认不会携带Cookie信息,如果需要携带,请配置下述参数:
window.name通过在iframe(一般动态创建i)中加载跨域HTML文件来起作用。然后,HTML文件将传递给请求者的字符串内容赋值给window.name。然后,请求者可以检索window.name值作为响应。
iframe标签的跨域能力;
window.name属性值在文档刷新后依旧存在的能力(且最大允许2M左右)。
每个iframe都有包裹它的window,而这个window是top window的子窗口。 contentWindow 属性返回iframe元素的Window对象。php跨域数据传递你可以使用这个Window对象来访问iframe的文档及其内部DOM。
HTML5新特性,可以用来向其他所有的 window 对象发送消息。需要注意的是我们必须要保证所有的脚本执行完才发送 MessageEvent,如果在函数执行的过程中调用了它,就会让后面的函数超时无法执行。
前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域,所以只能跨子域
在 根域 范围内,允许把domain属性的值设置为它的上一级域。例如,在”aaa.xxx.com”域内,可以把domain设置为 “xxx.com” 但不能设置为 “xxx.org” 或者”com”。
现在存在两个域名aaa.xxx.com和bbb.xxx.com。在aaa下嵌入bbb的页面,由于其document.name不一致,无法在aaa下操作bbb的js。可以在aaa和bbb下通过js将document.name = 'xxx.com';设置一致,来达到互相访问的作用。
WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很棒的实现。相关文章,请查看: WebSocket 、 WebSocket-SockJS
**需要注意:**WebSocket对象不支持DOM 2级事件侦听器,必须使用DOM 0级语法分别定义各个事件。
同源策略是针对浏览器端进行的限制,可以通过服务器端来解决该问题,例如nginx
DomainA客户端(浏览器) == DomainA服务器 == DomainB服务器 == DomainA客户端(浏览器)
Q3: PHP如何实现跨域
因工作需要,客户端软件的一些界面用HTML+CSS+Javascript实现,这些文件放在客户端本地,以本地文件形式加载,但是有些情况下,需要连接服务器取得一些信息,如果不做任何处理,则请求失败,返回的信息如下:
No
'Access-Control-Allow-Origin'
header
is
present
on
the
requested
resource.
Origin
'null'
is
therefore
not
allowed
access.
这是因为浏览器跨域策略起作用,阻止了跨域的请求。看看HTTP请求过程就知道。第一次请求后端时候,浏览器意识到是访问一个跨与资源,没有直接发送GET请求获取数据,而是发送了一个OPTIONS请求询问是否可以访问该资源。我们称之为Preflight请求,默认因为同源策略的存在,该请求返回的Header中没有'Access-Control-Allow-Origin'属性,所以访问失败。
如果要实现跨域,关键在于服务器,客户端的代码按照正常的方式编写即可。对于服务器,只需要在收到OPTIONS请求的地方,返回的头信息中增加该属性即可,代码如下:
header("Access-Control-Allow-Origin:
*");
注意,一定要在所有信息输出到客户端之前设置。
以上所述是小编给大家介绍的PHP如何实现跨域的相关内容,希望对大家有所帮助!
Q4: php怎样实现跨域操作?
服务器端PHP跨域一般没有限制,不像浏览器端有same origin policy。
把服务器B中php跨域数据传递的代码封装一下,确定好输入和输出,比如输入是一个HTTP Request,参数POST过去;输出是从HTTP Response返回一段XML。之后在服务器A的代码中做一个对服务器B的HTTP请求并处理返回的XML就好php跨域数据传递了。
有问题请追问~
关于php跨域数据传递和php curl跨域的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








