2014-09-24 189 views
0

我在這裏遇到問題。 在jquery ajax,當我們在這裏定義網址時,它已經被外部世界所取代如何隱藏JQuery Ajax中的URL

有可能會被別人遺漏我們如何克服這個錯誤,以便URL被編碼? 'action_rl ='@ Url.Action(「GetMovieslist」,「Getjson」)';

<script type="text/javascript"> 
    //Actionname attribute used here. 
    $(document).ready(function() { 
     $("#btnGetMovies2").click(function() { 
      //var actionUrl = '@Url.Action("GetMovieslist", "Getjson")'; 
      var actionUrl = '@Url.Action("GetMovieslist", "Getjson")'; 
      $.getJSON(actionUrl, displayData2); 
     }); 
    }); 

    function displayData2(response) { 
     if (response != null) { 
      for (var i = 0; i < response.length; i++) { 
       $("#movieList2").append("<li>" + response[i].Title + " " + response[i].Genre + " " + response[i].Year + "</li>") 
      } 
     } 
    } 
</script> 

那麼,有沒有辦法,我們可以oversome這個問題

+0

你不能。您應該在服務器端添加驗證以防止誤用。例如,如果您需要登錄,則可以添加用戶特定的令牌作爲參數,以防止非用戶返回結果。 – 2014-09-24 11:07:58

+0

這是客戶端代碼,它不可能從客戶端隱藏它。否則,瀏覽器將不知道如何提交您的AJAX查詢。 – used2could 2014-09-24 11:10:40

+0

使用'tinyUrl'並提供到Urlmapping表中。 – Amit 2014-09-24 11:47:15

回答

1

凡是跨發送來自客戶端可以通過客戶端可以看到。就你而言,如果客戶端在Chrome中打開「網絡」面板,他們可以看到他們正在點擊的端點。

如果你不希望出現這種情況,你有一個萬無一失的選擇:

不要爲來自AJAX調用的內容;從服務器提供它。

您始終可以使用AJAX方法獲取token參數並記錄該令牌(並檢查它是否被濫用),但是不能直接阻止最終用戶訪問該端點。

0

喬治說的+1。


此外,如果您擔心csrf攻擊,則XMLHttpRequest受制於瀏覽器的同源策略:出於安全原因,只有它們是由同一個源創建的,纔會成功。