2010-01-01 2 views
0

원격 서버에서 파일을 복사하려고했지만 원격 호스트가 세션을 사용하고 있으며 쿠키가 필요합니다.원격 서버에서 데이터 복사 - 문제가 있음

다음
HTTP/1.1 302 Moved Temporarily Content-length: 0 Content-type: text/html Server: Sun-ONE-Web-Server/6.1 Date: Mon, 28 Dec 2009 13:40:53 GMT Set-cookie: ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==;path=/;domain=.example.org Set-cookie: WLSESSION=1528980108.20480.0000; expires=Tue, 29-Dec-2009 13:40:52 GMT; path=/ Location: http://example.org/exmple.mp3&tag=1 Via: 1.1 proxy-server1 Proxy-agent: Sun-Java-System-Web-Proxy-Server/4. 

좀 따끔 코드를했고, 내장 : 나는 정의 변수 후이 방법 을 사용 잘

...

$url="http://example.org/exmple.mp3"; 
$nn = "\r\n"; 
$cookies=""; 
$request = GET . " " . str_replace (" ", "%20", $url) . " HTTP/1.1" . $nn . "Host: " . $host . $nn . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" . $nn . "Accept: */*" . $nn . "Accept-Language: en-us;q=0.7,en;q=0.3" . $nn . "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" . $nn . "Pragma: no-cache" . $nn . "Cache-Control: no-chache" . $nn . $proxyauthorization . $referer . $cookies . "Connection: Close"; 

$fp= socksopen($Proxy,$port, $errno, $errstr, 15); 

socket_set_timeout ($fp, 120); 

fputs ($fp, $request); 

fflush ($fp); 

//read header 

$i = 1; 

do { 

$header.= @fgets ($fp, 128); 

$i++; 

} while (strpos ($header, $nn . $nn) === false); 

echo $header; 

fclose ($fp); 

는 지금은 URL 말했다 쿠키 헤더를 가지고 코드의 내용 :

$cookies="ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==, WLSESSION=1528980108.20480.0000"; 

같은 날 나와 함께 URL을 다시 요청하십시오. 위에서 언급 한 THOD 다시 내가

그것은 원격 웹 사이트가 처음 방문자로 할 때마다 저를 치료하고 새로운 쿠키

잘못 무엇을 얻을 설정 솔기 다른 쿠키와 같은 헤더를 가지고있다?

답변

1

먼저 cURL과 같이 사전 포장 된 것을 사용하는 대신 손으로 직접 시도해 주신 것을 축하드립니다. "진정한 프로그래머"는 효율성이나 신뢰성이 떨어지더라도 때때로 사용합니다. 왜냐하면 사용하고 구축하는 시스템에 대한 이해가 높아지기 때문입니다.

이제 문제를 해결하십시오.

쿠키를 서버로 올바르게 전송하지 않습니다. 귀하의 코드는 보내야하는 "쿠키"헤더가 아닌 쿠키 값 자체를 전송합니다. 요청과 함께 쿠키를 보내는 올바른 방법은 Cookie: name=value입니다 (Cookie: ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==,WLSESSION=1528980108.20480.0000).

+0

감사를 설정해야 할 것 같습니다 ... n7zMA == WLSESSION = 1,528 ... 네 : n7zMA == = 1,528 WLSESSION 그 문제 – Alireza

+0

동일한 결과? 전 공간 내 포함 된 I 및 상기 유, 공간 인 것 사이의 차이 : 헤더는 말한다 : HTTP/1.1 302 이전 일시적으로 콘텐츠 길이 : 0 콘텐츠 형식 : text/html 서버 : 일-ONE-웹 서버/6.1 날짜 : 2010년 1월 1일 (금) 그리니치 표준시 03시 30분 17초 설정 - 쿠키 : ERIGHTS = x2BFYIx2BVvODdWm9hREdxxH2PYux2Ff3BSmqQ9-hhBHcMigRXArbhL4YBG81w ==; 경로 = /; 도메인 = .example.org 설정 쿠키 : WLSESSION = 1562534540.20480.0000; 만료 = 2010 년 2 월 1 일 3시 30 분 18 초 GMT; path =/위치 : http : //example.org/example.mp3&tag=1 서버가 동일한 전송 새로운 쿠키가있는 헤더 !! – Alireza

+0

글쎄, 원래 코드와 다른 점은 당신이 $ 쿠키의 시작 부분에 "쿠키 :"를 가지고 있지 않다는 것입니다. 즉 쿠키가 쿠키로 인식되지 않습니다. 단일 헤더의 여러 쿠키 사이의 공백은 선택 사항입니다. –

1

HTTP 요청을 수작업으로 작성하는 데 많은 어려움이있는 것 같습니다. PHP에서 cURL과 같은 것을 사용하지 마십시오. supports cookies은 기본적으로 제공됩니다.

+0

덕분에 너무 ........ 나는 컬을 사용하는 경우, 내가 장님 내가 뭐하는 거지 알고 싶어 :) 내 코드를 전체 잊고 :(곱슬 곱슬하는 :( – Alireza

0

한 가지가, 내가 복사하려고 파일을 .pdf 파일 정확히

난 내 브라우저에 의해 결과가 있음을 확인

:

http://example.com/stamp/stamp.jsp?tp=&arnumber=5344171&isnumber=5344169 :

이 URL이 말을

나는 URL의 소스 코드를 확인

, 그것은 하나 iframe을 가진 자바 스크립트는 또 다른 페이지로 리디렉션을 포함

(브라우저에서) 페이지 10,403,210 원

 <frameset rows="65,35%"> 
<frame src="http://example.com/stamp/banner.jsp" frameborder="0" framespacing="0" framepadding="0" scrolling="no" /> 
<frame src="http://example.com/stampPDF/getPDF.jsp?tp=&arnumber=5255176&isnumber=5255174" frameborder="0" /> 

나는 URL을 클릭 할 때 표시로 는, 그것은 URL2이있다 을 URL2 저를 리디렉션 http://example.com/stampPDF/getPDF.jsp?tp=&arnumber=5255176&isnumber=5255174

URL2가 포함되어 있습니다. pdf 파일 쉽게 복사 (다운로드) 할 수 있습니다.

내 요청으로 쿠키를 설정하고 쿠키를 설정하고 보내면 쿠키가 다시 응답합니다.

잘못된 사람들인가?

관련 문제