0

IP 전화와 통신하는 Chrome 확장 프로그램을 개발했습니다.Chrome 확장 프로그램이 브라우저를 다시 시작한 후 요청한 권한을 잃었습니다.

XMLHttpRequest 개체를 통해 POST 요청을 보내는 이벤트 페이지에서 통신이 이루어집니다.

옵션 페이지에서 휴대 전화의 호스트 이름이나 IP 주소를 구성 했으므로 chrome.permissions.request과 함께 옵션을 저장 한 후 매니페스트 파일에 optional_permissions을 추가하고 사용자에게 요청하십시오. 내가 크롬을 다시 시작할 때까지 간 원산지 XHR은 아무 문제없이 지금 작동

...

크롬을 다시 시작한 후 요청 된 권한을 잃은 것처럼 보인다 나는 전형적인 is not allowed by Access-Control-Allow-Origin 오류가 발생합니다.

확장 프로그램 권한을 클릭하면 요청한 권한이 더 이상 표시되지 않습니다.

chrome.permissions.request은 사용자 동작을 위해서만 작동하기 때문에 내 확장 프로그램이로드되는 동안 또는 즉시로드를 요청할 수 없습니다. 옵션 페이지에서 권한을 다시 요청하면 다시 허용하지 않겠 냐고 물어 보지 않고 허가를 받으면 모든 것이 정상적으로 작동합니다.

요청한 후에이 권한을 영구적으로 부여 할 수있는 방법이 있습니까? 확장 프로그램에서 필요로하는 끝점에 대한 액세스 권한 만 갖기를 원합니다.

대단히 감사합니다.

+0

소리가 버그와 같습니다. Chrome의 선택적 권한 API에 문제가 아직 없었습니다. 다른 곳에서는 권한을 취소하지 않았습니까? –

+0

나는 어떻게 내가 그것을 취소 했을까를 생각할 수 없다. 지금까지'chrome.permissions.remove'에 대한 호출이 없습니다. 내 매니페스트 파일의 줄은 다음과 같습니다 :''optional_permissions ': [ "* : // */CGI/Execute"]'그리고 내 요청은 다음과 같습니다 :'chrome.permissions.request ({origins : ['http : // '+ phoneAdress +'/ CGI/Execute ']}, ...' – Chris

+1

선언 된 선택적 권한의 서브 세트 대신'* : // */CGI/Execute'를 요청하면 문제가 해결 된 것 같습니다. . –

답변

3

나를 위해 다음 문제가보고되었습니다. 내 질문에 대한 답변 : Issue 158004: chrome.permissions.request support for user-supplied URL.

명확한 설명 : optional_permissions에 정의 된 사용 권한의 하위 집합을 요청할 수 없습니다. http://*/*을 정의하면 정확히이 문자열을 요청해야합니다! http://example.org/*과 같은 하위 집합은 작동하지 않습니다!

문제가 Revision 182287

에서 수정되었습니다 "더 와일드 카드 처리의 URLPatterns 사이에 그냥 일반 문자열 비교도 없다": 여기

명확한 것을 만드는 문제 설명에 주석에서 인용 한 것입니다

남아있는 유일한 것은 빨리이 크롬 픽스에 포함 된 손가락을 교차시키는 것입니다. 그 사이에 피 묻은 Access your data on all websites 허가를 사용해야 할 것입니다.

+0

당신은'http : // * /'/'https : // * /'선택 권한을 사용하여 의도 된 방식으로 작동하도록 할 수 있습니까? 그들은 크롬 36에서 여전히 재설정 된 것 같습니다. –

+0

아니요 지금까지는 같은 문제인 것 같습니다. 나는 이전과 똑같은 행동을했지만 다시 점검했다. – Chris

+2

이 기능을 사용할 수 있습니다. [documentation] (https://developer.chrome.com/extensions/permissions)에서 :'런타임에만 발견 할 수있는 호스트를 요청하려면 "http : // * /"및/또는 "https : // */"를 optional_permission으로 사용합니다. 이렇게하면 일치하는 스키마가있는 한 Permissions.origins의 출처를 지정할 수 있습니다 .' –