2012-06-29 3 views
1

다른 도메인의 웹 페이지를 호출해야합니다. 브라우저에서이 페이지를 호출하면 정상적으로 응답합니다. 하지만 서버 측 코드 또는 jquery 아약스 스크립트에서 호출하면 빈 xml 응답합니다. 다른 도메인에서 웹 페이지/서비스를 호출하는 방법은 무엇입니까?

나는이 같은 페이지 또는 서비스를 호출하는 것을 시도하고있다 :

http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801

이 브라우저에서 정상적으로 응답합니다. 나는이 같은 교류 # 코드를 작성할 때 :

WebClient wc = new WebClient(); 
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"; 
wc.Headers[HttpRequestHeader.Accept] = "*/*"; 
wc.Headers[HttpRequestHeader.AcceptCharset] = "ISO-8859-1,utf-8;q=0.7,*;q=0.3"; 
wc.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate,sdch"; 
wc.Headers[HttpRequestHeader.AcceptLanguage] = "en-US,en;q=0.8"; 
wc.Headers[HttpRequestHeader.Host] = "otherdomain.com"; 
var response = wc.DownloadString("http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801"); 
Response.Write(response); 

을 내가 응답으로 빈 XML을 얻을 :

<xml></xml> 

어떻게 내가 브라우저에서 가져온 서버 측 코드 또는 클라이언트 측에서 동일한 응답을 얻을 수 있습니다 ?

나는 여기에 솔루션을 시도 : 나는 무엇을 이해 didnt는, 그래서 내가 설명 솔루션을 적용 couldnt는 Calling Cross Domain WCF service using Jquery

.

+1

내 브라우저에서 http://hititbet.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801로 이동하면 아무 것도 얻을 수 없습니다. 이 기능이 작동하려면 로그인해야합니다. 서버 측 코드에서 작동하지 않습니다. –

답변

1

브라우저에서받은 서버 측 코드 또는 클라이언트 측에서 동일한 응답을 얻으려면 어떻게해야합니까?

same origin policy 제한으로 인해 브라우저에서 상호 도메인 AJAX 요청을 보낼 수 없습니다.

.NET. 반면에. 당신은 완벽하게이 요청을 보낼 수 있습니다. 그러나 아마도 예를 들어 User-Agent 헤더와 같은 일부 HTTP 헤더를 기대하는 요청을 보내려고하는 웹 서버 일 수 있습니다. 따라서 서버가 필요로하는 요청의 모든 헤더를 제공했는지 확인하십시오. 예를 들어, User-Agent 헤더를 추가합니다 :

using (WebClient wc = new WebClient()) 
{ 
    wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"; 
    var response = wc.DownloadString("http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801"); 
    Response.Write(response); 
} 

당신은 당신의 브라우저가 작동하고 단순히 그 헤더를 추가 요청에 따라 전송 된 모든 HTTP 요청 헤더를 검사 할 수 지르고 또는 크롬 개발자 도구 모음을 사용할 수 있습니다.

+0

언급 한대로 헤더를 추가했지만 작동하지 않았습니다. – hakan

+0

웹 브라우저에서 보낸 헤더를 보셨습니까? 정확히 같은 것을 보냈습니까? 그렇게했다면 원격 웹 사이트가 2 가지 요청을 구별 할 수있는 방법이 전혀 없기 때문에 작동해야합니다. –

+0

예 모든 헤더를 브라우저로 추가했습니다. 지금 내 게시물을 편집 할 것입니다. – hakan

관련 문제