2016-12-01 54 views
0

如何防止向用戶顯示json響應?

$.ajax({ 
 
    type: "GET", 
 
    contentType:"application/json;charset=UTF-8",     
 
    url:"/api/links/", 
 
    data: JSON.stringify(data), 
 
    dataType: "json", 
 
    success: function (response) { 
 
     //some code 
 
    } 
 
)}

當用戶在瀏覽器中輸入以下網址:

MYDOMAIN/API /鏈接

,然後按ENTER鍵它表明類似的json數據:

[ 
    { 
    "$id": "1", 
    "LinkId": 1, 
    "Title": "example.com", 
    "Url": " www.test.com", 
    "IsShow": true, 
    "UserId": 1 
    }, 
    { 
    "$id": "2", 
    "LinkId": 2, 
    "Title": "fars.com", 
    "Url": "fars.com", 
    "IsShow": true, 
    "UserId": 1 
    } 
] 

現在我的問題是如何防止向用戶顯示這些數據?

+0

這是不可能的,因爲你的代碼可以讀取的是你的用戶可以閱讀的內容。但是,您可以混淆代碼,加密數據以使其難以閱讀。 – ymonad

+0

你不能,但你使用Referer來確定請求來自哪裏 –

+0

yes.using Referer是最好的解決方案。非常感謝 – Mohsen

回答

0

沒有防彈的方法。

大多數時候,無論何時將AJAX請求發送到服務器,都會在請求中附加一個名爲X-Requested-With的值爲XMLHttpRequest的特殊標頭。

因此,如果您希望只能通過AJAX請求訪問數據,那麼通過簡單檢查X-Requested-With標頭是否具有XMLHttpRequest值,可以決定是返回JSON還是404數據還是404

您也可以對您的數據進行加密,因爲@ymonad提出了額外的安全措施,但同樣只會讓用戶難以看到,但幾乎不可能。

+1

SSL和API密鑰不是一個非常防彈的方法嗎? – Crowes

+0

我假定問題是在他的網頁上下文中提出的,而不是通過REST API在服務器之間進行通信。但是你可能是對的。 –