需要通过ajax对chrome扩展中的远程服务进行跨域请求。
当用户在使用扩展程序之前获得服务授权时,一切正常。但是当一个非协作用户使用 401错误代码(unathorized)使请求扩展失败时。
我的目的是完成浏览器般的外观。如果您未在某个网页上获得授权,则会出现一个对话框,提示您输入凭据。由于它们是正确的浏览器显示网页内容。
我试图添加扩展HTML布局一些隐藏在服务上的隐形元素强制浏览器内置域授权对话框出现,但id似乎不是正确的方法。
长话短说,你知道一些策略强制浏览器内置授权来自chrome扩展或只是通过javascript代码,而无需将用户重定向到某个单独的服务网页。或者,也许,这是不可能的,为什么?
提出请求的代码很简单:
$.ajax({
url: 'service url that requires authorization',
dataType: 'json',
success: function (info){
//success handler
},
error: function (){
//error handler
}
});
WBR,Vitaliy
答案 0 :(得分:1)
我认为可以听chrome.webRequest.onAuthRequired
(https://developer.chrome.com/trunk/extensions/webRequest.html#event-onAuthRequired)。在事件监听器中,您可以提示用户输入凭据,例如,通过显示看起来像内置授权对话框的自定义窗口。 onAuthRequired
是chrome.webRequest中唯一支持异步阻塞的事件,它允许您异步获取凭据(来自用户)并传递响应(凭据)。
chrome.webRequest.onAuthRequired.addListener(function(details, callback){
// Prompt the user to enter credentials. Call
// callback({authCredentials: {username: xxx, password: xxx}});
// when they are ready.
}, {.../*request filter*/}, ['asyncBlocking']);