2009-11-26 4 views
0

텍스트 상자에서 일부 값을 읽고이를 jQuery POST 메서드를 통해 서버에 보냅니다. 사용자가 "bla bla"와 같은 텍스트를 입력하면 호출이 실패합니다. 데이터는이 경우 다음과 같습니다데이터에서 script-tag를 포함하는 jQuery ajax 호출

var data = { myKey: 'bla <script> bla' }; 

그리고이 같은 서버에 보내 : 그것은 호출과 같은 서버 측에

$.post(targetUrl, data, function(x) {...}); 

(AN Asp.Net 웹 양식) 서버에 도달하지 않습니다. 어떤 힌트를 어떻게 해결할 수 있을까요? 잘못된 태그에서 데이터를 정리하는 편리한 기능이 있다면 괜찮을 것입니다.

답변

1

aspx 페이지의 유효성 확인 요청을 비활성화 했습니까?

페이지 선언이 추가 :

jQuery.fn.stripTags = function() { 
     return this.replaceWith(this.html().replace(/<\/?[^>]+>/gi, '')); 
}; 

당신이 ASP.NET의를 Page_Load을 받습니까 : validateRequest="false"

0

JQuery와 함수를 사용하여 태그를 제거하기 위해? 그렇다면 Request.Params에 아무것도 없습니다.

0
당신이 다음 (.NET 코드를 사용하여 서버 측의 올바른 값을 검색 할 수 있음을 완료 한 후

var data = { myKey: escape('bla <script> bla') }; 

아래와 같이 나는 자바 스크립트 이스케이프 기능을 사용하여 값을 클라이언트 측을 탈출 제안

)

HttpUtility.UrlDecode(param_value_to_decode) 

I이 시험되는 정확한 값이 게시 요청을 통해 서버에 제대로 전달되고있다.

희망이 도움이됩니다.

추가 정보 : 오류의 원인을 언급하는 것을 잊었습니다. 방화 광을 사용하여 요청을 검사 할 때 "500 Internal Server Error - 잠재적으로 위험한 Request.Form 값이 ...에서 발견되었습니다."를 반환합니다. 이것은 스크립트 주입으로부터 보호하기 위해 asp.net의 보호 메커니즘에 내장되어 있습니다. 다음 페이지 지시문 ValidateRequest = "false"는 예상대로 문제를 해결하지 못했습니다 (기존 WebForms에서 작동). 확실하지 않은 Mvc 플랫폼에 특정한 것일 수 있습니다. 위의 해결책은 효과가 있으므로 그냥 사용하십시오.

감사

G

+0

당신이 당신의 컨트롤러 또는 조치에 지시문을 추가 할 필요가 MVC에서하여 validateRequest를 사용하는 – Gregoire