有一個架在Apache上的web要到在不同網域的另一個Server抓資料,但是和另一個server之間進行資料傳遞的程式是用javascript寫的,所以會因為需要跨網域而出現問題。
由於一些原因已經寫好的javascript程式以及整個架構都盡量不能動到,所以我的解決方法是在web端新增一個簡單的php proxy。
<?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,這樣就能夠順利運行了!
沒有留言 :
張貼留言