2009-11-11 5 views
1

Java 서블릿을 사용하여 xpi 파일을 작성하려고합니다. 나는 서블릿에서 다음 코드를 사용하여 우편으로 XPI를 반환하는 경우 은 -Java 서블릿을 사용하여 Firefox 확장 (XPI 패키지) 빌드

response.setContentType("application/zip"); 
response.setHeader("Content-Disposition","inline;filename=xpitest.xpi;"); 

모든 위의 코드와 잘 작동합니다. 파일을 파일 시스템에 저장하고 설치할 수 있습니다. 나는 다음과 같은 헤더와 컨텐트 유형과 파일을 반환하려고하면

그러나, - 클라이언트 측에

response.setContentType("application/x-xpinstall"); 
response.setHeader("Content-Disposition","filename=xpitest.xpi;"); 

, 파이어 폭스는 파일이 XPI 패키지 및 설치 옵션을 보여주고 있음을 인식한다. 하지만 설치하려고 할 때이 오류가 발생합니다. "유효한 패키지가 아닙니다. 207"

누군가 setContentType() 및 setHeader()에 사용할 것을 제안 할 수 있습니까?

감사합니다.

+0

나는 애플 리케이션 서버로 JBoss를 사용하고 있습니다. – user162916

답변

1

"Firefox에 추가"를 클릭하면 addons.mozilla.org에서 트래픽 스 니프가 발생하면 application/x-xpinstall로 설정된 Content-Type과 올바른 Content-Length가 표시됩니다. 너도 똑같이해볼 수있어. 여기에 헤더는 다음과 같습니다 당신이 압축 .xpi 아닌 .xpi를 반환하기 때문에

HTTP/1.1 200 OK 
Date: Wed, 11 Nov 2009 04:51:03 GMT 
Server: Apache 
Last-Modified: Thu, 05 Nov 2009 15:10:39 GMT 
Accept-Ranges: bytes 
Content-Length: 4248 
Keep-Alive: timeout=2, max=100 
Connection: Keep-Alive 
Content-Type: application/x-xpinstall 
0

이것은, 추측이지만, 난 당신이 응용 프로그램/우편 번호를 사용해야합니다 상상? .xpi가 본질적으로 압축되지 않으면 실제로 압축 된 .xpi는 그 자체로 유효하지 않습니다. 압축되지 않은 상태로 보내는 것은 어떨까요?

+1

xpi는 그냥 zip 파일 인 확장 프로그램입니다. jar 파일과 마찬가지로 모든 영광을 얻은 zip 파일입니다. –

0

두 번째 응답 Content-Disposition 필드에 inline 키워드가 누락되었습니다. 이유가있을 수 있습니까?

또한 Murali과 같이 제시하면 을 실제 값으로 설정해야합니다.

0

ByteArrayOutputStream을 사용하여 콘텐츠 길이를 가져올 수 있어야합니다.

서블릿은 ByteArrayOutputStream에 문서를 작성하고 완료되면 크기를 확인하여 필드에 입력하십시오.

그런 다음 byteArrayStream.writeTo(response.getOutputStream())을 통해 콘텐츠를 보내십시오.

-Bipin