2011-01-06 3 views

답변

13

이 글을 올바르게 읽는다면, 크로스 도메인/애플리케이션 문제없이이 작업을 수행 할 수 있습니다. 컨트롤러에서이 작업을 수행하려는 경우 HttpWebRequest 클래스를 사용하여 데이터를 게시 할 수 있습니다. 대상 응용 프로그램과 관련하여 웹 브라우저에서 게시하는 것과 개념적으로 동일합니다.

은 여기에 신속하고 더러운 조각입니다 :

// name/value pairs. field names should match form elements 
string data = field2Name + "=" + field1Value + "&" + field2Name+ "=" + field2Value 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(<url to other applications form action>); 

// set post headers 
request.Method = "POST"; 
request.KeepAlive = true; 
request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 

// write the data to the request stream   
StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(data); 

// iirc this actually triggers the post 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

이것은 내가 찾고있는 해결책과 같습니다. 고마워, 나는 그것을 시험해 볼 것이다! – Monkey

+2

작성자를 플러시하거나 (var writer = new StreamWriter (request.GetRequestStream()) 을 사용하십시오. { writer.Write (data); } –

0

도메인이나 응용 프로그램을 사용할 경우 운이 좋지 않을 수도 있습니다. 다른 사이트로 이동하여 쿼리 문자열을 사용할 수 있습니까?

또는 테이블에 쓰고 다른 사이트로 이동하십시오.

보안 모델에 위배된다고 생각되는만큼 다른 사이트에 게시 할 수 있는지 확실하지 않습니다.

+0

보안 노출로 인해 쿼리 문자열을 사용할 수 없으며 사용자가 수정할 수 있습니다. 도메인을 넘나들고 있습니다. – Monkey

+0

도메인을 건너는 경우 개체를 JSON으로 변환하고 Javascript를 serialize 한 다음 컨트롤러가 다른보기로 리디렉션되는 경우 View 또는 TempData를 반환하면 ViewBag에 할당합니다. 그렇다면 이것이 내가 한 일입니다. AngularJS를 사용하여 CORS가 활성화 된 WebAPI에 게시하십시오. WebAPI는 컨트롤러에 게시 할 수있는 URL을 지정할 수 있습니다. @ Html.Raw (TempData [ "yourdata"])는 Angular가 WebAPI에 게시 할 수있는 Javascript 객체에 할당 할 수 있습니다. 이 답변을 참조하십시오 : http://stackoverflow.com/a/32769992/1171842. 클래식 ASP의 경우 데이터를 받아들이는 코드를 WebAPI로 이식해야합니다. – Yogi

-1

나는 미묘한 문제가 누락 될 수 있습니다,하지만 당신은 그냥받을 고전적인 ASP 페이지의 URL에 MVC 양식에 action을 설정할 수 없습니다 그것?

필드는 ASP 쪽에서 읽을 수있는 양식 헤더에서 사용할 수 있습니다.

ASP 사이트에 교차 사이트 요청 위조 검색이있는 경우에만 문제가 발생하지만 내부 앱인 경우 ASP 쪽 위조 감지 코드에 예외를 추가 할 수 있습니다.

관련 문제