2016年9月13日 星期二

[PHP]PHP Proxy—處理Javascript無法跨網域問題

有一個架在Apache上的web要到在不同網域的另一個Server抓資料,但是和另一個server之間進行資料傳遞的程式是用javascript寫的,所以會因為需要跨網域而出現問題。
由於一些原因已經寫好的javascript程式以及整個架構都盡量不能動到,所以我的解決方法是在web端新增一個簡單的php proxy。
proxy.php
<?php
header("Content-Type:text/html; charset=utf-8");
$url=$_GET['url'];

// 建立一個新的 cURL session
 $ch = curl_init();  

if (isset($url) && !empty($url)) {
 curl_setopt($ch, CURLOPT_URL,$url);

 // 設置 URL 及其他參數
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
 curl_setopt( $ch, CURLOPT_ENCODING, "UTF-8" );
 //SSL error
 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
      curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
  
 // 抓取 URL 內容
 $output=curl_exec($ch);
 echo curl_error($ch);
 echo $output;
 // 關閉 cURL session 釋放系統資源
 curl_close($ch);
}
?>

用法是在javascript連接另一個server的網址前面加上

 proxy的位址/proxy.php?url=server的網址

 讓javascript透過php proxy傳送request給另一台server,回傳的response也透過proxy丟回給javascript,這樣就能夠順利運行了!

沒有留言 :

張貼留言