2012-05-20 2 views
0

.NET 4.0 MVC 프로젝트에서 작업 중입니다. Ajax에서 KO 모델의 데이터를 게시하려고합니다. 이 데이터는 다음 XML 형식의 문자열입니다.XML 형식의 AOax 게시 녹아웃 (KO) 데이터를 사용할 수 없습니다.

<SearchCriteria><Criteria SearchOn="Name" SearchValue="test 3" /></SearchCriteria> 

나는 이런 식으로 게시하려고합니다.

$.ajax({ 
     url: destUrl, 
     data: ko.toJSON(DataToPost()), 
     type: "POST", 
     success: function (result) { 
      // I am doing my stuff here. 
      } 
     }, 
     error: function (request, textStatus, errorThrown) { 
      alert(request.statusText); 
     } 
    }); 

여기서 보내는 데이터는 "ko.toJSON(DataToPost())"입니다. DataToPost()KO model 데이터 멤버 DataToPost에 포함 된 XML 문자열을 반환합니다. ko.toJSON()은 의 KO model 데이터를 변환하는 데 사용됩니다.

javascript 또는 html 태그가 포함 된 것을 게시 할 때 일반적으로 thrown 인 런타임 예외가 발생합니다. 이는 .NET의 보안 기능입니다. 다음은 예외입니다. (나는 KO 그 시간을 사용하지 않은하지만 그것은 즉 비 Ajax 정상 포스트이었다)

A potentially dangerous Request.Form value was detected from the client. 

&lt;SearchCriteria&gt;&lt;Criteria SearchOn=&quot;...est 3\&quot; /&gt;&lt;/SearchCriteria&gt; 

나는 다시 때때로 비슷한 상황에 직면했다. 나는 그 시간에 문제를 극복했다. javascriptescape() 그러나 이번에는 failed이다. 나는 다음과 같이 사용했다.

$.ajax({ 
    url: destUrl, 
    **data: ko.toJSON(escape(SearchCriteria()))**, 
    type: "POST", 
    success: function (result) { 
     // I am doing my stuff here. 
     } 
    }, 
    error: function (request, textStatus, errorThrown) { 
     alert(request.statusText); 
    } 
}); 

다른 일반적인 수정 사항은 페이지 수준이나 응용 프로그램 수준에서이 보안을 비활성화하는 것입니다. 다음과 같이 할 수 있습니다.

페이지 수준

<%@ Page validateRequest="false" %> 

응용 프로그램 수준.

<configuration> 
    <system.web> 
     <pages validateRequest="false" /> 
    </system.web> 
</configuration> 

그러나이 보안을 사용하지 않는 것은 좋지 않습니다. 나는 그것이 현명한 움직임이라고 생각하지 않는다. 지금 나는 무엇을해야할지 모른다. 제안이 필요합니다.

미리 감사드립니다.

답변

0

이것은 실제로 녹아웃 질문이 아닙니다. 정말 asp.net에 XML 데이터를 게시하는 방법입니다. 요청 유효성 검사는 .NET 4.0에서 beginRequest 전에 시작됩니다. web.config를 이것으로 변경하십시오.

<httpRuntime requestValidationMode="2.0"/> 

이제 특정 작업 방법에 ValidateInput 속성을 추가하십시오.

[ValidateInput(false)] 

이렇게하면 전체 사이트를 손상시키지 않고 데이터를 처리 할 수 ​​있습니다.

희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 나도 그렇게 생각했는데 이것은 보안과 타협하는 것과 같을 것이다. 나는 편안하지 않다. 그래서 나는 차라리 다른 접근법을 생각했습니다. 질문에 대한 내 답을 확인하십시오. – Aum

0

XML 형식화 된 문자열 대신 XML 형식화 된 문자열 대신에 Key value pair 목록을 게시하기로 결정했습니다. 이 접근법은 잘 작동합니다.

0

안녕하세요, xml을 문자열로 전달하고 클라이언트 측에서 직렬화하는 대신 서버 측에서 해독합니다. 당신은 단추 제출에 무언가 잘못을 할 수 있다고 확신하기 때문에 HTML을 게시 할 수 있습니까?

관련 문제