我开发了一个与IP电话通信的Chrome扩展程序。
通信在事件页面中完成,该页面通过XMLHttpRequest
对象发送POST请求。
由于在选项页面中配置了手机的主机名或IP地址,我将optional_permissions
添加到清单文件中,并在使用chrome.permissions.request
保存选项后向用户请求。
Cross-Origin XHR现在可以毫无问题地工作,直到我重新启动chrome ...
重新启动chrome之后,似乎所请求的权限丢失了,我得到了典型的权限
is not allowed by Access-Control-Allow-Origin
错误。
当我点击扩展程序权限时,我也会看到我的请求权限不再列出。
因为chrome.permissions.request
仅适用于用户手势,所以我无法在加载扩展程序或动态时请求它。如果我在我的选项页面中再次请求权限,我不会再被问到是否要允许它或者不允许该权限被授予并且所有内容都像往常一样再次运行。
有没有办法在请求后获得持久授权?我只希望扩展程序能够访问它所需的端点。
非常感谢。
答案 0 :(得分:3)
对我来说,以下报道的问题回答了我的问题: Issue 158004: chrome.permissions.request support for user-supplied URL
要说清楚:无法请求optional_permissions
中定义的权限子集。如果您定义http://*/*
,那么您需要准确请求此字符串!像http://example.org/*
这样的子集不起作用!
以下是问题说明中的评论引用,其中明确说明: “没有通配符处理,只是URLPatterns之间的简单字符串比较”
问题已在Revision 182287
中修复唯一剩下的就是交叉你的手指,这个修补程序很快就会被包含在一个upcomming chrome版本中。我们必须同时使用血腥的Access your data on all websites
权限。