pil*_*lat 5 google-chrome xmlhttprequest google-chrome-extension
我已经开始了一个新的扩展,基于一个较旧的扩展,我之前已经写过,现在正常工作.对于谷歌浏览器扩展,执行xhr的方案非常正常:内容脚本调用chrome.extension.sendRequest(数据,回调),实际的跨站点请求在backround.html中完成.
此外,我确保将请求的站点添加到manifest.json的"permissions"部分.
但是,background.html的控制台显示:"...... Origin-Control-Allow-Origin不允许使用原始chrome-extension:// .."
问题如下:除了没有"权限"中的目标域(我甚至在这里尝试过),什么可能导致此错误?
以下是一些基本的代码片段:
manifest.json的:
{
"name": "Register quote",
"version": "0.0.2",
"permissions": [ "<all_urls>" ],
"background_page" : "background.html",
"content_scripts": [
{
"matches": [
"http://somedomain.com/*"
],
"css": ["register_quote.css"],
"js": ["jquery-1.3.2.min.js", "register_quote.user.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
background.html: http ://pastebin.com/0zLArvfA
register_quote.user.js:
// here's the final call, how it's prepared by the content script after all:
chrome.extension.sendRequest({
'action': 'sendAjaxRequest',
'url': "http://somedomain.com/the_script.php"
'dataStr': "is_chrome=Y&ticketid=123123123&user=Vladimir+Mityukov&action=get_quoteids"
}, arg_callback);
Run Code Online (Sandbox Code Playgroud)
PS:忘了提一下,backround.html的控制台中还有以下错误:
Error in event handler for 'undefined': TypeError: Cannot read property 'length' of undefined
at setupPageActionEvents (chrome/ExtensionProcessBindings:424:36)
at chrome/ExtensionProcessBindings:1021:5
at [object Object].dispatch (chrome/EventBindings:182:28)
at Object.<anonymous> (chrome/EventBindings:237:25)
Run Code Online (Sandbox Code Playgroud)
不知道这个消息意味着什么,我的代码的哪一部分可能导致它...这里提到的脚本不是我的.
这可能是由模式的某些奇怪之处引起的"<all_urls>",也许尝试将其更改为您要调用的特定 URL:
请参阅:http://code.google.com/p/chromium/issues/detail? id=87671
"permissions": [ "http://somedomain.com/*" ]
Run Code Online (Sandbox Code Playgroud)
附带说明一下,现在允许内容脚本进行跨源 XHR 调用:
http://code.google.com/chrome/extensions/xhr.html
“版本说明:从 Chrome 13 开始,内容脚本可以向与扩展程序的其余部分相同的服务器发出跨源请求。在 Chrome 13 之前,内容脚本无法直接发出请求;相反,它必须发送一条消息向其父扩展请求扩展发出跨域请求。”
在这种情况下,您需要添加http://somedomain.com/到清单中的权限列表。
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |