2011-02-08 3 views
0

플러그인을 개발 중이고 주어진 호스트에 대해 브라우저 프록시를 가져와야합니다.xpcomglue를 사용하지 않고 NPAPI 플러그인에서 브라우저 프록시를 가져 오는 방법은 무엇입니까?

지금은 nsIProtocolProxyService을 사용하여 작동합니다. 그러나, NewURI 함수 (AN URI 객체를 구성 할 필요가 nsIProtocolProxyService :: 리졸() 의해 사용되는) nsACString에 CONST 참조 걸린다. 그리고 그것의 어떤 구체적인 구현을위한 것 같습니다 내가 할 수 없어 xpcomglue와 링크해야합니다 (내가 이해한다면 맞습니다, 나는 동적으로 링크를해서는 안됩니다 techincal ), 그리고 정적으로 연결할 수 없습니다 법적인 이유에 대한 xpcomglue_s).

그래서 브라우저 프록시 을 xpcomglue에 연결하지 않고 어떻게 얻을 수 있습니까?

답변

2

이것은 확실히 까다로운 질문입니다. 실제로 가능할 때 NPN_GetURL/NPN_PostURL 스타일 NPAPI 함수를 사용하는 것이 가장 좋습니다 (가능한 경우). 이것이 가능하지 않다면, 최근 브라우저 버전에 의존 할 수 없다면, 크릭을 더 많거나 적게 잡을 수 있습니다.

최신 버전의 Firefox/gecko API를 사용할 수 있다면 (Firefox 3.6이 지원하지만 어느 버전이 시작되었는지는 확신 할 수 없습니다.) docs는 gecko SDK 1.9를 말하지만 그곳에 있었던 것 같지 않습니다. point)이면을 NPNURLVProxy와 함께 사용하여 주어진 URL에 대한 프록시 정보를 얻을 수 있습니다.

다시 말하지만이 기능은 최신 브라우저에서만 작동하며 아직 지원하는 기능에 대한 호환성 매트릭스를 컴파일 할 기회가 없었습니다. 나는 이것을 FireBreath에 추가 할 계획이 있지만 1.4로 만들지 않았으므로 도착하기 몇 개월 전이 될 수 있습니다.

장애 조치 옵션으로 사용할 수없는 경우 가장 일반적인 해결책은 단순히 WinInet (Internet Explorer)에 대한 프록시 구성을 가져 와서 동일한 것으로 신뢰하는 것입니다.

이것은 (IMO) 중요한 문제이며, 정말 좋은 해결책이 아닙니다. 이것이 Flash가 악의적으로 프록시를 통한 네트워크 액세스로 변덕스러운 이유입니다.

+0

고마워요! 나는 3.6을 타겟팅 할 수 있습니다. 정확히 내가 묻는 답변입니다 (답변을 투표하는 "평판"이 없음). – rincewind

+0

당신은 여전히 ​​정답으로 표시 할 수 있어야합니다.]] – taxilian

+0

흠, 1.9.1은 어떤 이유로 1 (NPERR_GENERIC_ERROR)을 반환합니다 ... – rincewind

0

XPCOM을 사용하는 NPAPI 플러그인을 개발하면 안됩니다. Mozilla's docs을 참조하십시오. 아마도 당신은 당신이하고자하는 일의 적어도 일부분을 위해 파이어 폭스 확장을 사용할 수 있으며 JS 바인딩을 사용하여 플러그인과 플러그인 사이에서 통신 할 수 있습니다.

+0

왜? npruntime을 통해 플러그인 스크립트를 노출했지만 XPCOM을 통해 mozilla 서비스를 호출 할 수 있다고 생각했습니다. – rincewind

+0

Firefox, Chrome, Safari, Opera 등에서는 작동하지 않기 때문에 – taxilian

+0

알았어. 글쎄, 지금 당장 떠나야 해. – rincewind