2011-07-14 38 views
1

對於遊戲相關的項目。使用用戶的cookies訪問xml

要訪問遊戲數據,用戶必須「授權」訪問。爲此,他們訪問該網站上的一個頁面,該頁面在用戶的PC上設置3個cookie。

當用戶查看某些XML URL時,遊戲服務器檢查這些cookie是否正確,並返回所需的信息。

我的問題是,如何使用用戶的cookies解析這些XML文件,向數據添加樣式等?

如果我使用cURL加載URL,並且CURLOPT_COOKIE預先確定相關的cookie,它會正確返回信息。

但是,我不會知道用戶的cookies,因爲他們只對遊戲的域有效。

我確定這是可能的,雖然也許不是通過這種方法,因爲它已經在使用相同的數據之前完成。

曲奇組是:

toolbar_code = 19 digit auth code 
toolbar_hash = 19 digit hashed username 
toolbar_remember = true 

回答

2

您無法讀取XML跨域(不含CORS反正這還不成熟,還不足以)。

讓遠程腳本檢查cookie並將數據返回到調用者站點的最簡單方法是將<script>指向遠程站點,並在該腳本中執行JavaScript,從而爲調用者提供數據。正常的方法是JSONP

客戶端:

<script type="text/javascript"> 
    function receiveData() { 
     ...do something... 
    } 
</script> 
<script type="text/javascript" src="http://gamedataserver/getdata.php?jsonp=receiveData"></script> 

服務器端:

<?php 
    header('Content-Type: text/javascript'); 
    header('Cache-Control: no-cache'); 
    if (...user auth is OK...) { 
     $callbackfn= preg_replace('/[^a-z_]/', '', $_GET['jsonp']); 
     $json= json_encode(...game data...); 
     echo "$callbackfn($json);"; 
    } 
?> 
+0

中有一些有趣的觀點,但我沒有對遊戲的網站沒有控制權,所以肯定無法執行一個js有。謝謝你的想法。另外,「您無法讀取XML跨域」 - 當我在遠程XML文件上使用cURL並提供了有效的cookie時,返回了XML? – JakeSteam

+0

是的,這是簡單的客戶端服務器,而不是跨域。跨網域是指當一個網站指示用戶向第三方提出請求時。對XML文件進行跨域訪問是不可能的(缺少來自目標服務器的顯式方法來改變它,如CORS和JSONP包裝);否則這將是一個巨大的安全漏洞。如果遊戲網站沒有給你第三方腳本界面來獲取數據,那是因爲他們不希望第三方網站讀取他們的數據。 – bobince

+0

那麼,因爲甚至有一個ToS詳細說明數據如何被使用/存儲等,我會說他們這樣做,只是通過一個混亂的系統。還是要謝謝你的幫助。 – JakeSteam