2008-10-21 2 views
4

아주 간단한이 : 나는 Wireshark는 함께 트래픽을 검사하는 경우GET 메서드를 사용하여 URLRequest/URLStream에서 사용자 지정 헤더를 사용할 수 있습니까? 정말

var req:URLRequest=new URLRequest(); 
req.url="http://somesite.com"; 
var header:URLRequestHeader=new URLRequestHeader("my-bespoke-header","1"); 
req.requestHeaders.push(header); 
req.method=URLRequestMethod.GET; 
stream.load(req); 

그러나,의 my-bespoke-header이 전송되지 않습니다. URLRequestMethod.POST으로 변경하고 req.data에 일부 데이터를 추가하면 헤더가 전송되지만 수신 응용 프로그램에는 POST가 아닌 GET이 필요합니다.

문서에는 보내지 않을 헤더의 블랙리스트가 나와 있습니다. my-bespoke-header은이 중 하나가 아닙니다. 원래 요청이 동일한 도메인의 다른 포트에서 발생했다는 것을 언급 할만한 가치가 있습니다. policyfile 로그에는 아무 것도보고되지 않으므로 크로스 도메인 문제가 아니라도 allow-http-request-headers-from으로 crossdomain.xml을로드하면이를 해결할 수 있습니다. 아니면 POST 요청이있는 사용자 정의 헤더 만 보낼 수있는 Flash Player의 문서화되지 않은 기능입니까?

답변

6

내가 수집 할 수있는 것부터, HTTP GET에 대한 맞춤 헤더 지원이 없다는 가정은 실제로 표준 라이브러리의 문서화되지 않은 기능 (또는 버그?)입니다.

어쨌든 as3httpclient이 사용자의 목적에 맞는지 확인하고이 문제를 해결할 수 있습니다. 다음은이 라이브러리의 개발자의 블로그에 post에서 관련 코드 조각입니다 :

"나는 HTTP/GET 요청의 헤더를 설정 할 수 없습니다 매크로 미디어 플래시 플레이어 당신이 헤더를 설정 할 수 있습니다. 단지 POST 요청. 테드 릭과 함께이 문제를 논의하고 그는 나에게 말했다 내가 할 수있는 우리 소켓은 원하는 그는 시작 나에게있어 나에게 코드 조각을주고 매우 친절했다 달성하는 방법. "

+0

가 있다고 우리가 현재하고있는 것 (우리 자신의 http를 굴러 다니는 것)보다 많거나 적다. 소켓 연결에 의존한다는 것은 URLRequest/URLStream과 달리 프록시가 인식하지 못하고 많은 기업 방화벽에서 실패한다는 것을 의미한다. – spender

+2

그보다 더 나쁜 것은 원시 소켓을 사용하여 포트 843에 정책 파일을 제공 할 필요가있는 웜의 전체 도메인 간 보안을 열 수 있다는 것입니다. 많은 방화벽에 의해 차단됩니다 ... –

관련 문제