2011-09-29 4 views
0

httphandler를 만들었습니다. 모든 것이 잘 작동합니다 요청을받는다면 GET을 입력하십시오. 하지만 보안상의 이유로 GET 요청을 정말로 원하지 않습니다.게시 요청을 사용하여 Httphandler에서 데이터에 액세스하기

나는 다음과 같은 코드를 사용하여 jQuery를 사용하여 POST 요청을 만드는 중이라서 :

$.ajax({ 
     type: "POST", 
     async: false, 
     url: "SaveAccounts", 
     data: { a: "Sent Data" }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function OnSuccess(a) { 
      alert(a); 
     }, 
     error: function OnError(request, status, error) { 
      alert('Error: ' + request + ' ' + status + ' ' + error); 
     }, 
     complete: function() { 

     } 
    }); 

그리고 처리 요청에 대한 코드 것은 :

context.Response.ContentType = "application/json; charset=utf-8" 
    Dim s As String = context.Request.Params("a") 
    context.Response.Write(JsonConvert.SerializeObject(s)) 

이 코드는 클라이언트에서 자바 스크립트 경고에 '널'반환 측면.

요청 유형을 $ .ajax() 함수에서 GET으로 변경하면 모든 것이 잘 작동한다는 점에 유의하십시오. I는 액세스 시도

context.request.Params '가 결합 된 형태의 집합이다 context.Request.Form를 사용하여 데이터 ("A") 및 context.request.SserverVariables ("A"를) 등록한 ','ServerVariables ','Cookies '등

내가 어디로 잘못 가고 있는지 말해 주시겠습니까? 보고에 대한

감사합니다 ....

답변

1

에서 촬영보다 완벽한 예. 이 이외의 값은 변경되지 않습니다.

0

data: { "a=Sent Data" }, 

을 시도 예를 들어,

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 

http://api.jquery.com/jQuery.ajax/에서 또한 HttpHandlers 그래서 contentType이와 데이터 유형을 제거 JSON 데이터를 좋아하지 않는다.

를 이스케이프 -이 그냥 요청에서의 contentType 및 데이터 유형 사양을 제거하여 노력하고 있습니다

var dataString = "{ 'first' : '" + escape($('#fname').val()) + 
    "', 'mail' : '" + escape($('#tbMail1').val()) + 
    "', 'mailinglist' : '" + $("input[name='ml']:checked").val() + 
    "' }"; 
    /*alert(dataString.replace('\',','\',\n'));*/ // just for debugging ;) 

$.ajax({ 
    type: "POST", 
    url: "myAjaxHandler.asmx/ProcessSampleForm", 
    data: dataString, 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     $(".loadingimg").fadeOut(); 
     window.location.replace(msg.d); 
    }, 
    error:function(xhr,err){ 
     $(".loadingimg").fadeOut(); 
     alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
     alert("responseText: " + xhr.responseText); 
    } 
}); 

http://www.jphellemons.nl/post/JQuery-with-webform-input-validation-ajax-posting-json-to-aspnet-C.aspx

+0

작동 할 수도 있지만 이는 매우 신뢰할 수 없습니다. 텍스트 상자의 텍스트에서 값을 전송한다고 가정하고, 사용자가 입력 값에 "&"또는 "="기호를 포함하면 어떻게됩니까? –

+0

그럼 해결책을 확인했습니다. 또한 서버에서 null 값을 반환합니다. 요청 유형이 GET 인 경우 여전히 작동 중임을 참고하십시오. –

+0

항상 사용자 입력을 삭제해야합니다. escape를 사용하면 대부분의 네트워크를 통해 전송할 수있는 JavaScript 함수입니다. –

관련 문제