【发布时间】:2012-01-06 20:09:41
【问题描述】:
这是在扩展程序中运行的代码,在 background.html 中。
function onLoad()
{
var path="http://localhost:8082/index.htm?key=1234";
xhr.open('get', path, false);
xhr.send();
token=xhr.responseText;
caughtMsg=token+" *** ";
var channel = new goog.appengine.Channel(token);
var handler = {
'onopen': function(){caughtMsg+=" *** open";},
'onmessage': onMessage,
'onerror': function(e){caughtMsg+=" *** err "+e.description+" "+e.code},
'onclose': function(){caughtMsg+=" *** close";}
};
var socket = channel.open(handler);
socket.onmessage = onMessage;
}
它与 localhost 服务器脚本(在 python 中)交互,该脚本创建一个通道并返回一个令牌。然后令牌用于在客户端创建通道对象。 相反,我从汇总响应中得到的是:
channel-354645736-1234 * err invalid+token 401 * 关闭
当我在扩展范围之外执行此操作(不使用 ajax 建立连接)时,它就像一个魅力。
我会误入歧途吗?
【问题讨论】:
-
你确定 localhost 返回一个有效的令牌吗?
-
我很确定令牌是有效的。正如我所写,当我不在 chrome 扩展上下文中创建令牌并且不使用 ajax(按照频道 api 正式文档建议的那样做)时,它工作得很好。
-
尝试获取通过扩展生成的令牌并确保它在扩展上下文之外工作。
-
无法完成。每次请求打开频道时,都会在服务器端动态生成令牌
-
只需在您的代码中添加
console.log(token);,您就可以使用它在扩展上下文之外打开一个通道。
标签: javascript python google-app-engine google-chrome-extension channel