오늘 업무에서 다른 도메인에 자원을 써야할 부분이 있었다.
기본적으로 새로하는 프로젝트는 MVC3인데 기존에 잘 돌아가고 있는 공통 자원을 써야만 했다.
아...... 기존에는 가상디렉토리를 잡아서 썼는데
쩝 가상디렉토리를 쓰려니 해당 사이트의 dll들이 필요했다. 이건 아니다 싶어
아래와 같이 코딩했다.
Ajax로 비동기 통신을 해서 거기에서 나오는 Html을 가져오는 것이다. 간단하다. 하지만 유용하다.
Client단에서의 Ajax는 다 아시는 관계로 Controller에 코드만 살펴보겠다.
[HttpGet]
기본적으로 새로하는 프로젝트는 MVC3인데 기존에 잘 돌아가고 있는 공통 자원을 써야만 했다.
아...... 기존에는 가상디렉토리를 잡아서 썼는데
쩝 가상디렉토리를 쓰려니 해당 사이트의 dll들이 필요했다. 이건 아니다 싶어
아래와 같이 코딩했다.
Ajax로 비동기 통신을 해서 거기에서 나오는 Html을 가져오는 것이다. 간단하다. 하지만 유용하다.
Client단에서의 Ajax는 다 아시는 관계로 Controller에 코드만 살펴보겠다.
[HttpGet]
public string MyStudyList() { string result = String.Empty; HttpWebRequest request = WebRequest.Create(String.Format("yoursite{0}",Request.Url.Query)) as HttpWebRequest; request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = new CookieContainer(); HttpCookieCollection cookies = Request.Cookies; for (int i = 0; i < cookies.Count; i++) { HttpCookie httpCookie = cookies.Get(i); Cookie cookie = new Cookie(); cookie.Domain = request.RequestUri.Host; cookie.Expires = httpCookie.Expires; cookie.Name = httpCookie.Name; cookie.Path = httpCookie.Path; cookie.Secure = httpCookie.Secure; cookie.Value = httpCookie.Value; request.CookieContainer.Add(cookie); } WebResponse response = request.GetResponse(); using (Stream stream = response.GetResponseStream()) { using (StreamReader sr = new StreamReader(stream, Encoding.GetEncoding(51949))) { result = sr.ReadToEnd(); } } return result; }
위의 코드에서 중요한 부분은 for로 쌓여 있는 부분이다.
해당 url에는 쿠키기반의 인증절차로 인한 로그인한 자의 쿠키값을 가지고 어떤 행위를 한다.
쩝 그래서 위의 구문과 같이 쿠키를 컨테이너에 담아 리퀘스트를 보낸다.
쩝 쉽다. 하지만 모르는 사람이 많기에 글을 써본다.