.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.
<SearchCriteria><Criteria SearchOn="...est 3\" /></SearchCriteria>
나는 다시 때때로 비슷한 상황에 직면했다. 나는 그 시간에 문제를 극복했다. javascript
escape()
그러나 이번에는 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>
그러나이 보안을 사용하지 않는 것은 좋지 않습니다. 나는 그것이 현명한 움직임이라고 생각하지 않는다. 지금 나는 무엇을해야할지 모른다. 제안이 필요합니다.
미리 감사드립니다.
답장을 보내 주셔서 감사합니다. 나도 그렇게 생각했는데 이것은 보안과 타협하는 것과 같을 것이다. 나는 편안하지 않다. 그래서 나는 차라리 다른 접근법을 생각했습니다. 질문에 대한 내 답을 확인하십시오. – Aum