2010-01-25 72 views
3

這個問題可以看作是既實際又理論。URL是否可以被認爲是HTTP響應的唯一密鑰?

我正在設計一個涉及HTTP客戶端(Flash Player應用程序)和HTTP服務器「後端」的系統。每個註冊用戶都有自己的私人圖像庫。圖像可以上傳,當然隨後可以檢索。

由於用戶使用攜帶會話標識符的cookie進行身份驗證,我突然明白(並因此提出了問題),我可以爲經過身份驗證的客戶端提供以下類型的URL以檢索圖像(我的術語中的「資產」 。請注意,資產標識符即使在整個用戶中也是唯一的,即沒有兩個用戶都具有標識爲555的資產。而且,假定資產標識符是非常持久的,即該標識符是不可重用的。我在想的網址是:

http://myserver/user/asset/<asset_id> 

支架明顯表示變量的值,即這些和「ASSET_ID」不能被逐字在這裏拍攝,他們表示實際資產標識符。預計上述URL的HTTP請求攜帶帶有用戶會話標識符的cookie頭,該用戶會話標識符唯一地認證並授權用戶作爲所請求資產的所有者。

我非常喜歡在永久性URL之後(如Tim Berners-Lie曾說過的,「很酷的URI不會改變」),但顯然,由於資源資源對於上傳/擁有它們的用戶來說是私有的,所以它們不是被任何中間代理緩存,只有用戶代理。

我們可以認爲上述URL是識別用戶資產的好方法嗎?我的擔心是,響應會根據是否提供有效的會話標識cookie標頭而有所不同,因此URL和響應之間不存在一對一的關係。但是沒有什麼可以做的,是嗎?服務器必須檢查用戶是否有權檢索資產,對嗎?如果你們在這裏有更好的解決方案建議,我也很想聽到它。謝謝。

回答

2

你已經說了一切,我不會改變你的策略:-)如果一個未經授權的用戶試圖訪問一些資產,只需給他一個403 http代碼......這是正確的和預期的迴應在這種情況下

+0

感謝您的肯定:-)我有一個後續問題 - 沒有足夠的空間來制定它在這裏。如果你有興趣(只有你是) - http://stackoverflow.com/questions/2139298/can-an-url-really-be-considered-to-the-only-key-for-a- HTTP的響應部分-2- – amn 2010-01-26 12:27:01

1

只是因爲一個URL不會改變並不意味着每個請求該URL必須成功(甚至返回相同的對象/資產)。

您可以很容易地使用它作爲標識符,並簡單地告訴未經身份驗證的客戶端,他們是401 Not Authorized,或者甚至根本無法訪問它:403 Forbidden

相關問題