C\#배경 에서 크로스 필드 MVC 서비스 호출 및 쿠키 검증 실현
그래서 저 는 직접 돌 았 습 니 다.모든 전단 응용 은 유 니 버 설 백 엔 드 서비스 대 리 를 가 져 왔 습 니 다.이 서 비 스 는 크로스 도 메 인 문 제 를 해결 하고 자동 대리 가 프론트 데스크 에서 크로스 도 메 인 데 이 터 를 가 져 옵 니 다.
크로스 도 메 인 을 어떻게 계산 하 는 지 는 오래된 문제 이지 만 다음 두 가 지 를 주의해 야 합 니 다.같은 IP,서로 다른 포트,데이터 방문 은 크로스 도 메 인 이지 만 쿠키 방문 은 가능 합 니 다.(이것 은 이해 하기 어렵 습 니 다)
해결,소스 코드
CookieContainer cookieContainer = new CookieContainer();
[HttpPost]
public string CommonPost(string url)
{
log.Info(CookieHelper.GetCookie("ITDC_UserName") + " CommonPost Url=" + url);
Uri address = new Uri(System.Configuration.ConfigurationManager.AppSettings["RESTfulAPI"].ToString() + url);
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// , cookie
cookieContainer.Add(address, GetCookie("ITDC_UserName"));
cookieContainer.Add(address, GetCookie("ITDC_UserRole"));
request.CookieContainer = cookieContainer;
StringBuilder data = new StringBuilder();
for (int i = 0; i < Request.QueryString.Count; i++)
{
if (Request.QueryString.Keys[i].ToString() == "url") continue;
data.Append("&" + Request.QueryString.Keys[i].ToString() + "=" + Request.QueryString[i].ToString());
}
// Create a byte array of the data we want to send
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString().TrimStart('&'));
// Set the content length in the request headers
request.ContentLength = byteData.Length;
// Write data
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
string result = "";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
result = reader.ReadToEnd();
}
log.Info(CookieHelper.GetCookie("ITDC_UserName") + " CommonPost Url=" + url);
return (result);
}
프론트 데스크 톱 호출
Ext.Ajax.request({url: APIUrl + '/Nebula/CommonPost?url=/Nebula/PostComment/&KlId=1&Msg=ok&Author=admin&Title= ',
method: "POST",
success: function (response) {
Ext.Viewport.unmask();
var obj = Ext.decode(response.responseText);
Ext.Msg.alert(" ", obj.Msg, Ext.emptyFn);
},
failure: function (response) {
Ext.Viewport.unmask();
Ext.Msg.alert(" ", " , !", Ext.emptyFn);
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클린 아키텍처의 Presenter를 이해하기 어려운 것은 MVC 2가 아니기 때문에클린 아키텍처에는 구체적인 클래스 구성 예를 보여주는 다음 그림이 있습니다. 이 그림 중에서 Presenter와 Output Boundary(Presenter의 인터페이스)만 구체 구현을 이미지하는 것이 매우 어렵다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.