2016-09-11 9 views
2

idをコントローラ(ASP.NET MVC 5)に渡して、コントローラから結果を取得したいとします。私は、次のコードを持っている: '/書籍/ GetBookById' + IDを:パラメータをAjaxに安全に渡す

function LoadBook(id) { 
    $.ajax({ 
     url: '/Book/GetBookById' + id, 
     type: 'get', 
     dataType: 'json', 
     success: function (data) { 

     }, 
     error: function (err) { 
      alert("Error: " + err.responseText); 
     } 
    }) 
} 

URLを行うには、それは安全ですか?安全でない場合は、これを行う方法はありますか?

public JsonResult GetBookById(int id) 
{ 
    // do your getting here 
    var yourdata = MyDataAccessClass.getBookById(id); 
    return new Json(yourdata, JsonRequestBehavior.AllowGet); 
} 

あなたのAJAX URLは次のようになります:

function LoadBook(id) { 
$.ajax({ 
    url: '/Book/GetBookById/' + id, 
    type: 'get', 
    dataType: 'json', 
    success: function (data) { 

    }, 
    error: function (err) { 
     alert("Error: " + err.responseText); 
    } 
}) 
} 

これは "安全" であるあなたがこれを行うには、所定の方法がある

encodeURIComponent(Id) 
+1

パラメータをURLエンコードする必要があります。 – SLaks

+0

これを行うためのRESTfulな方法を探しているなら、あなたのURLは '/ Book/[id]'や '/ Book/GetBookById/[id]'のようになります。/RESTfulではない/ Book/GetBookById?id = [id]。つまり、VSツールは自動的にあなたのためにこれを足場にすることができたと言っています。 – richb01

答えて

1

を使用する必要が

+0

パラメータをエスケープする必要があります。 – SLaks

+0

整数でない場合のみ。私の例ではそれはありますので、エスケープする必要はありません。もちろん、データ型がOPのコードに含まれているかどうかは不明です。 :-) – richb01

+0

@ richb01これは私が何をしたのか抽出したものです。ありがとうございました! SLaksありがとう、私はそれをより安全にするためにエンコーディングパラメータについて知りませんでした。しかし誰もがそれを正しく解読できますか? W3Cでエンコーディングテーブルが表示されるので、エンコーディングによってどのようにパラメータがより安全になりますか? –

1

マイクロソフトのMVCで標準的な方法で呼び出しを行います。

関連する問題