3

需要通过 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,维塔利

4

1 回答 1

1

我认为可以收听chrome.webRequest.onAuthRequiredhttps://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']);
于 2012-12-09T07:08:36.920 回答