2013-01-21 2 views
1

사용자가 내 웹 사이트에서 파일을 업로드 할 수있는 SWF 파일이 있습니다. 해당 SWF가 내 서버의 upload.php에 POST 요청을 보내 파일을 업로드합니다.SWF에서 POST 요청시 쿠키 값이 전송되지 않습니다.

하지만 그렇게하기 전에 upload.php에서이 작업을 수행하는 사람이 signed in인지 확인하고 싶습니다. 이 현재로서는 요청 헤더에있는 SID cookie value을 확인하고 데이터베이스의 SID 값 (데이터베이스에 세션을 저장합니다)에 대한 항목을 확인합니다. 나는 chrome에서 잘 작동하지만 SWF가 요청을 생성 할 때 쿠키 헤더를 보내지 않으므로 firefox에서 실패합니다.

어떻게해야합니까? 도와 주셔서 감사합니다. 크롬

Content-Length: 355894 
Origin: http://localhost 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 
Content-Type: multipart/form-data; boundary=----------ei4Ij5ae0ae0ei4Ef1Ef1KM7GI3Ef1 
Accept: */* 
Referer: http://localhost/home Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: PHPSSID = 238e320eewbjdbew923e092ejhwbjhwebd 

전송

헤더는 헤더 그것은 크롬의 기능,하지만 파이어 폭스의 버그 파이어 폭스

Accept: text/* 
Content-Type: multipart/form-data; boundary=----------GI3Ef1Ef1ae0GI3cH2Ef1Ef1cH2KM7 
User-Agent: Shockwave Flash 
Host: localhost 
Content-Length: 355894 
Connection: Keep-Alive 
Cache-Control: no-cache 

답변

0

에 보냈다. SWF 업로드는 명시 적으로 브라우저 쿠키를 전송해야합니다. 버전 3.0부터 FancyUpload를보십시오.

또한 suhosin이있는 PHP는 User-Agent 헤더가 브라우저와 동일하지 않은 경우 세션 변수를 제거 할 수 있습니다. 이것은 '세션 고정'이라고 불렀습니다. 따라서 SWF를 업로드 할 때도 요청하는 동안 브라우저를 User Agent로 보내야합니다 (또는 suhosin 패치를 비활성화하십시오).

관련 문제