2015-09-29 26 views
-1

我正在寫一個AngularJS應用程序與php api對話。 有沒有辦法阻止用戶直接進行api調用,而無需通過位於某個特定域的Angular應用程序。 因此,他們必須訪問我的域,angularjs位於,並只通過Angular應用程序調用api。 我知道,因爲它是客戶端,所有代碼都是可以檢查的。 我的應用程序有一個公共部分和一個只有在用戶登錄後纔可用的部分。 因此,我可以通過OAuth或JWT輕鬆保護用戶登錄後的呼叫,但我希望保護整個事情,包括不需要用戶登錄的公共部分。限制AngularJS使用到一個域

這實際上可行嗎?

謝謝!

回答

0

不,它最終不是。 A public API是public。它接收HTTP請求並返回HTTP響應。 HTTP請求沒有上下文。你想要限制的是,只有當前打開了你的特定網站的客戶端才能發送這些特定的HTTP請求給你。這是無稽之談。無論客戶端當前正在進行什麼操作,HTTP請求都是HTTP請求。

是的,你可以檢查Referer頭,但這只是任意人可以添加到他們的請求手動。

以不同的方式來看待它:如果您未使用Angular和單獨的數據API編寫您的網站,但返回了良好的舊HTML頁面會怎麼樣?你會要求只有特定的人才能看到HTML嗎?你不能。這是無稽之談。僅僅因爲你以不同的方式打包數據傳輸並不會改變這一點。

+0

好吧,我很害怕這個。謝謝。 –