簡體   English   中英

如果另一台服務器/網站從我的服務器加載圖片,怎么告訴?

[英]If another server/website load image from my server, how to tell?

關於

我有一個網站,用戶可以將圖片上傳到他們的個人資料,以便其他人可以看到他們。 然后,當人們查看每個圖像時,我會在中間顯示圖像。 在圖像上方有關於已上載圖像的用戶的信息。 每張圖片的網址如下所示: http//website.com/image/id

問題

我想讓人們在其他人/他們自己的網站上的html圖片標簽(<img src="http://website.com/image/id">)使用上面的圖片地址

到目前為止,我有一個功能,如果他們在網址后添加“/ img”( http://website.com/image/id/img )並將其復制並粘貼到-tag中就可以了,但如果有可能我當用戶加載的圖像正常顯示時會以這種方式工作,但是當它被帶有此URL的-tag加載時: http ://website.com/image/id它將正確顯示圖像。 (沒有html和“header image / png”)。

我嘗試了什么

如上所述,我已經有可能在每個圖像之后進行廣告/ img,因此可以使用它並將其嵌入到帶有-tag的網站上。 我查看了$_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'], $_SERVER['SERVER_ADDR']以查看是否有效。 但這不起作用,因為在-tag中稱它為我的服務器ADDR和NAME。 因為REFERER會在這種情況下工作,但如果訪問者只訪問圖像而不是瀏覽整個網站,它將顯示沒有上傳/文件信息的圖像。

那又怎樣?

我搜索了這樣的案例,要么沒有這樣的情況,要么我不知道要搜索什么。

簡而言之

我需要一種方法來檢測網站是否通過另一個網站上的-tag顯示,然后顯示一個不同的正確圖像供使用。 因為現在如果用戶將http://website.com/image/id復制並粘貼到-tag中,它只會出錯。

注意

我希望你們能幫助我,我試圖說明我在尋找什么以及我嘗試過什么。 如果沒有,請告訴我。 很抱歉,如果上面的某些內容包含拼寫錯誤的單詞,語法不正確或者說得不好解釋。 我不會每天說英語,但我會盡我所能。

請查看$_SERVER['HTTP_ACCEPT']

最流行的瀏覽器似乎都在請求圖像時發送修改的ACCEPT:標頭。

請使用以下代碼:

<?php
file_put_contents('/tmp/accept_headers.txt', $_SERVER['HTTP_ACCEPT'] . PHP_EOL . '---' . PHP_EOL, FILE_APPEND);
?>
<img src="test.php"/>

test.php在哪里,當然是同一個文件,我得到以下結果:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
^ Google Chrome (Linux), direct request
---
image/webp,*/*;q=0.8
^ Google Chrome (Linux), request through <IMG> tag
---
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
^ Firefox (Linux), direct
---
image/png,image/*;q=0.8,*/*;q=0.5
^ Firefox (Linux), <IMG>
---
text/html, application/xhtml+xml, */*
^ IE 11, direct
---
image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
^ IE 11, <IMG>
---

結論:

讀取$_SERVER['HTTP_ACCEPT']值。 如果它以image/開頭,則瀏覽器專門請求圖像,並且可能是通過<img> HTML標記請求URL。 編寫腳本以實物回復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM