首页 > chrome插件编写跨域请求错误

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 正常。
插件运行, 报错。,,求解,


目前的提问还不足以精准定位问题,建议至少有一张报错的截图,或者报错的内容。


得到回复之后的修改:@白汀 的答案说对了一部分,但没有说到点子上,之所以会报 jsonp callback 未定义,是因为jsonp的请求被真正的页面拦截,而不在你的插件沙盒环境里面,这是浏览器的策略。

也就是说,你的jsonp callback 在 插件沙盒中被定义,但是 jsonp 请求的文件被真正的页面捕获执行,那里当然是没有你定义的 callback 了。

解决的办法就是:你应该发起一个 XHR 请求,比如 json。当然你要像 @白汀 说的,把你要请求的页面地址加入到permission 当中。

参考资料:http://stackoverflow.com/questions/8495825/jsonp-request-in-chrome-extension-callback-function-doesnt-exist


你好:
首先我有几个疑问~
1,你的跨域请求确定能得到指定的响应响应数据吗~
2,你用得插件是哪个,叫什么~
3,插件是运行js还是模拟网络请求~
4,jquery的跨域请求你确定是这么总的吗~
表示你的问题看不懂想要表达的意思~

希望我的回答可以帮助到你,有问题请留言~


因为chrome插件机制也是有安全策略的,你要在配置文件中声明你可允许的网络请求域名。

"permissions": [
    "http://www.enom.com/"
  ]

参考官方文档: https://developer.chrome.com/extensions/xhr
需要翻墙访问

【热门文章】
【热门文章】