chrome插件编写跨域请求错误
$.ajax({
type:'get',
async:true,
url:'http://www.enom.com/domainsearch/api',
data:{
command:'check',
sld:reg_name_array['0'],
tldlist:reg_name_array['1'],
flush:'false',
timeout:'10000',
language:''
},
dataType:'jsonp',
jsonpCallback:"baogume",
success:function(baogume){
alert('0')
},
error:function(XMLHttpRequest,textStatus,errorThrown){
alert(XMLHttpRequest)
}
})
控制台运行 弹出0 正常。
插件运行, 报错。,,求解,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你好:
首先我有几个疑问~
1,你的跨域请求确定能得到指定的响应响应数据吗~
2,你用得插件是哪个,叫什么~
3,插件是运行js还是模拟网络请求~
4,jquery的跨域请求你确定是这么总的吗~
表示你的问题看不懂想要表达的意思~
希望我的回答可以帮助到你,有问题请留言~
目前的提问还不足以精准定位问题,建议至少有一张报错的截图,或者报错的内容。
得到回复之后的修改:@白汀 的答案说对了一部分,但没有说到点子上,之所以会报 jsonp callback 未定义,是因为jsonp的请求被真正的页面拦截,而不在你的插件沙盒环境里面,这是浏览器的策略。
也就是说,你的jsonp callback 在 插件沙盒中被定义,但是 jsonp 请求的文件被真正的页面捕获执行,那里当然是没有你定义的 callback 了。
解决的办法就是:你应该发起一个 XHR 请求,比如 json。当然你要像 @白汀 说的,把你要请求的页面地址加入到permission 当中。
参考资料:http://stackoverflow.com/questions/8495825/jsonp-request-in-chrome-extension-callback-function-doesnt-exist
因为chrome插件机制也是有安全策略的,你要在配置文件中声明你可允许的网络请求域名。
参考官方文档: https://developer.chrome.com/extensions/xhr
需要翻墙访问