내 브라우저에서 http://www.alexandriava.gov/rss.aspx으로 이동하면 Chrome 개발자 도구 콘솔에서 서버가 상태 200에 응답하고 일부 XML이 표시되고 모두 우주에 잘 들어 있다고 알립니다.특정 서버의 HTTP 응답에 혼동이 있음
내가 원격으로 액세스 할 몇 가지 코드를 작성하는 경우 :
Node.js를
var h = require("http");
h.get("http://www.alexandriava.gov/rss.aspx", function(resp){
console.log(resp);
}).on("error", function(err){
console.error("ERROR ===========================");
console.error(err);
});
나는 상태 코드 (302)를 얻을 수를, 궁극적으로는 ASP.NET 오류 페이지에 저를 리디렉션하려고하기 때문이다.
date: 'Fri, 06 Jun 2014 03:17:11 GMT',
server: 'Microsoft-IIS/6.0',
'x-powered-by': 'ASP.NET',
'set-cookie':
[ 'COASTATS=539132b724041115851869612717; domain=.alexandriava.gov; expires=Tue 30-Dec-2031 23:59:59 GMT; path=/','ecm=user_id=0&isMembershipUser=0&site_id=&username=&new_site=/&unique_id=0&site_preview=0&langvalue=0&DefaultLanguage=1033&NavLanguage=1033&LastValidLanguageID=1033&DefaultCurrency=840&SiteCurrency=840&ContType=&UserCulture=1033&dm=www.alexandriava.gov&SiteLanguage=1033; path=/',
'EktGUID=b56f532c-011d-4ccc-98cb-7a1b3e170fcf; expires=Sat, 06-Jun-2015 03:17:11 GMT; path=/',
'EkAnalytics=0; expires=Sat, 06-Jun-2015 03:17:11 GMT; path=/' ],
'x-aspnet-version': '2.0.50727',
location: '/handle500.aspx?aspxerrorpath=/rss.aspx',
'cache-control': 'private',
'content-type': 'text/html; charset=utf-8',
'content-length': '164' }
에도이 매우 간단한 C# 코드 초기 요청에
using (var reader = System.Xml.XmlReader.Create("http://www.alexandriava.gov/rss.aspx"))
{
var rss = System.ServiceModel.Syndication.SyndicationFeed.Load(reader);
return rss.Description.Text;
}
오류 :하지만 단지 싱긋 웃음을 위해, 여기에 응답 헤더입니다. 상태 : "ProtocolError", 메시지 : "원격 서버에서 오류를 반환했습니다 : (500) 내부 서버 오류."
브라우저와 코드 사이의 차이점을 알고 HTTP 요청에 대해 충분히 이해하지 못합니다. 내가 읽으려고하는 사이트는 RSS 피드를 사용하여 프론트 페이지를 생성합니다.
이것은 (Error when Parsing RSS)와 관련이 있다고 생각하여 제안 된 Web.config 변경을 시도했습니다.
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
하지만 도움이되지 않았습니다.
다음에 시도해야 할 사항은 무엇입니까?
쿠키가 다른가요? 기본적으로 대부분의 프로그래밍 방식 HTTP API는 쿠키를 저장하고 포함하도록 설정되지 않습니다. –
브라우저와 비슷한 사용자 에이전트 헤더를 추가하십시오. –