chrome插件编写跨域请求错误

发布于 2022-09-02 23:44:25 字数 549 浏览 12 评论 0

$.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

余生一个溪 2022-09-09 23:44:25

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

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

情绪 2022-09-09 23:44:25

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


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

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

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

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

陈独秀 2022-09-09 23:44:25

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文