2010-05-31 9 views
7

Ich muss eine echte HTTP-Anfrage über cfhttp emulieren. Ich bekam RSS-Feed mit ColdFusion, aber heute Abend begannen sie, meine Anfrage zu blockieren und eine Indexseite anstelle von RSS fead zu senden.Wie emuliert man eine echte HTTP-Anfrage via cfhttp?

Ich habe useragent für cfhttp hinzugefügt, aber es hilft nicht.

Opera, Firefox und Chrome öffnen Feed korrekt vom selben Computer.

Antwort

6

Ja, danke. Ich schnüffelte alle HTTP-Header, die der Browser an die Site sendet und emulierte sie dann in der cfhttp-Anfrage. Die Lösung lautet:

<cfhttp url="http://example.com/feed" 
useragent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.7 (KHTML, like Gecko) Chrome/5.0.391.0 Safari/533.7" 
result="httpresult" 
redirect="false" 
> 
<cfhttpparam type="header" name="HTTP_REFERER" value="http://example.com/feed/" > 
<cfhttpparam type="header" name="Accept-Encoding" value="gzip,deflate,sdch" > 
<cfhttpparam type="header" name="Proxy-Connection" value="keep-alive" > 
<cfhttpparam type="header" name="Accept" value="application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"> 
<cfhttpparam type="header" name="Accept-Language" value="en-US,en;q=0.8"> 
<cfhttpparam type="header" name="Accept-Charset" value="ISO-8859-1,utf-8;q=0.7,*;q=0.3"> 
<cfhttpparam type="cookie" name="some-cookie" value="1"> 

4

Ich würde vermuten, dass die Website mit dem RSS-Feed den Benutzer-Agent immer noch schnüffelt, und der CFHTTP-Server ist nicht auf einen festgelegt, den die Site verwendet. Verwenden Sie einen HTTP-Proxy-Sniffer (z. B. Charles HTTP Proxy), um die HTTP-Anforderung eines Browsers, der den RSS-Feed korrekt anzeigt, aufzuzeichnen. Verwenden Sie dann CFHTTP mit derselben User Agent-Zeichenfolge wie zuvor erfolgreich.

Wenn es immer noch nicht funktioniert, verwenden Sie die 'Proxyport'- und' Proxyserver'-Attribute von CFHTTP, um die ColdFusion-Anfrage über Ihren HTTP-Sniffer auszuführen und zu überprüfen, ob der Benutzeragent korrekt eingestellt ist und mit einem Arbeitsrechner verglichen wird anfordern.

+0

Auch wert andere Header Kontrolle, nicht nur User-Agent. (Vielleicht sucht der Entfernungsserver nach einem Cookie oder Akzeptieren * Header.) –

+0

Sie können auch versuchen, den Proxy auf einem anderen Server zu verwenden, falls sie durch IP blockiert werden. –