2011-02-11 25 views
1

我正在嘗試爲特定的一羣人創建代碼段,這些人已經獲得了在我們的網站上放置我們公章的權利。這個想法一開始似乎很簡單,直到我試圖通過一個不同的網站進行測試。有條件地爲遠程站點提供徽標

基本上,我希望用戶有一個代碼片斷,如:

//include jquery for post 
<script type="text/javascript" language="javascript" src="http://www.mysite.com/jquery.js"></script> 

<script language="javascript"> 
    $.post("http://www.mysite.com/test.php", {requesting_id:"12345", requesting_address:window.location.host}, function(data){ 
    document.write(data); 
    }); 
</script> 

test.php的檢查傳遞的變量對一個SQL數據庫。如果他們傳遞的ID與要求提供該文件的網址匹配,並且我們已同意繼續向他們的頁面投放我們的徽標(true/false),則會返回圖片。

只要所有文件都存在於我的服務器上,它就可以很好地工作。看起來問題在於php文件似乎不在我的服務器上運行,而是在請求服務器上運行,因此查詢無法運行。

有沒有簡單的方法來做到這一點?我花了幾個小時尋找一種方法,而且我沒有想法。

感謝您的幫助!

+0

你是什麼意思的 「請求服務器」 嗎? – 2011-02-11 21:47:44

+0

順便說一下,只需複製ID字符串(在HTML/JS中很容易看到),就可以輕鬆地顛覆您的方案。 – 2011-02-11 21:48:58

+0

http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html可以幫助 – 2011-02-11 21:49:20

回答

2

我不會使用JavaScript,絕對不需要所有這些網站包括jQuery。

如果您使用的是PHP,最簡單的方法就是從一個php文件提供一個圖片。該圖像將如下所示:

<img src="http://yoursite.com/image.php?request_id=XXXX"> 

並且您製作了一個基於request_id提供圖像的php腳本。

你將不得不從你的服務器在PHP中讀取圖像,並以header("Content-type: image/jpeg")(如果是JPEG格式)提供圖像。

如果你有一個可變的圖像,輸出(對於JPEG ...),簡直是這樣的:

header("Content-type: image/jpeg"); 
imagejpeg ($image); 
0

,因爲它是用jQuery的docs

由於瀏覽器的安全限制,大多數「Ajax」的請求都受到同源策略;該請求無法成功從不同的域,子域或協議中檢索數據。

您可以使用網址爲 「http://img.example.com/logo requesting_id = 12345 ...」,並簡單地把圖像作爲輸出或者創建適用於iframe ...

0

有允許腳本對不同域上的對象進行操作的一些嚴重安全問題。爲什麼不允許用戶在他們的頁面上放置靜態URL,而是在服務器端評估用戶是否有資格,而不是試圖在客戶端解決它們?如果是,則提供該文件。如果沒有,請提供透明的.gif文件,以使其網站看起來不會被破壞。無論哪種方式,您完全可以避免任何跨站點腳本問題。

相關問題