跨域 SSH

1、用file_get_contents方法

$host  'url'
$randomNumber = file_get_contents ( $host );
echo  $ $randomNumber ;

2、用Curl

$host  'url'
$ch  = curl_init(); 
curl_setopt( $ch , CURLOPT_URL,  $host ); 
// 返回结果 
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch , CURLOPT_HEADER, 0); 
// 使用POST提交 
curl_setopt( $ch , CURLOPT_POST, 1); 
// POST参数 
$str  array ( 'a=1' , 'b=2' , 'c=3' ); 
curl_setopt( $ch , CURLOPT_POSTFIELDS,  $str );
// 结果 
$res  = curl_exec( $ch ); 
curl_close( $ch );

使用curl库,使用curl库之前,你可能需要查看一下php.ini,查看是否已经打开了curl扩展

3、 用fopen打开url, 以get方式获取内容

<?php
$fp = fopen ( $url , 'r' );
while (! feof ( $fp )){
$result .= fgets ( $fp ,1024);
}
echo " $result" ;
fclose( $fp );
?>


能否在外网机上做代理,给内网机通过代理访问外网的方式来调用开放平台的接口呢?


能访问外网的服务器上搭建一个http透明代理只允许内网访问,内网CURL指定proxy就可以了。

可以使用SSH的端口转发功能实现。
假定A是本地内网主机,B是远程提供第三方服务的主机,这两台主机之间无法连通。但是,现在还有一台C,可以同时连通前面两台主机。因此,很自然的想法就是,通过C,将A连上B。
在A上执行如下命令:

ssh -L 3002:B:3001 C

参数的意思是“本地端口:目标主机:目标主机端口"。这条命令的意思就是指定SSH绑定本地端口3002,然后指定C将所有的数据,转发到目标主机B的3001端口(你也可以指定其它端口)。

这样一来,我们只要连接A的3002端口,就等于连上了B的3001端口。这样我们还可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。

php 调用第三方接口 算不算跨域

PHP接收值无非是$_GET和$_POST,具体到HTTP协议也就是请求头和请求体。PHP这边接收数据之后进行处理,然后协定格式输出即可,这里的格式可以是json,xml或者二进制等等

后台处理的话curl 或者 fsockopen发http请求

if (strtoupper($trade_type) == "APP"){
                curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
                curl_setopt($ch,CURLOPT_SSLCERT, $this->config['open']['ssl_cert_path']);
                curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
                curl_setopt($ch,CURLOPT_SSLKEY, $this->config['open']['ssl_key_path']);
            }else{
                curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
                curl_setopt($ch,CURLOPT_SSLCERT, $this->config['mp']['ssl_cert_path']);
                curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
                curl_setopt($ch,CURLOPT_SSLKEY, $this->config['mp']['ssl_key_path']);
            }
        }
        //post提交方式
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        //运行curl
        $data = curl_exec($ch);
        //返回结果
        if($data){

            curl_close($ch);
            return $data;
        } else {
            curl_close($ch);
            return "xxx";
        }
    }

再贴个fsockopen的,这个是为了异步的,所以没接收数据.

public function async_post($host,$path,$data){

        $post = http_build_query($data);
        $len = strlen($post);
        $fp = @fsockopen( $host , 80, $errno, $errstr, 5);
        if (!$fp) {
            return false;
        } else {

            $out = "POST $path HTTP/1.1\r\n";
            $out .= "Host: $host\r\n";
            $out .= "Content-type: application/x-www-form-urlencoded\r\n";
            $out .= "Connection: Close\r\n";
            $out .= "Content-Length: $len\r\n";
            $out .= "\r\n";
            $out .= $post."\r\n";
            fwrite($fp, $out);
            fclose($fp);
            return true;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值