没有jsonp服务器的JSON跨域

时间:2013-10-16 00:52:35

标签: jquery json jsonp firefox-os

我正在制作FireFoxOS 打包应用。 我想从公共json-api服务器获取一个库,但是提供服务的服务器不会将json更改为jsonp(使用?callback或?jsonp仍然只返回json)是否在客户端有解决方法? 我使用jquery或zepto和骨干 我的代码:

$.ajax({
    url: apiMangaeden[0],
    dataType: 'jsonp',
    data: 'data',
    jsonp: 'callback',
    success: function (data) {
        console.log('It works')
    }
});

3 个答案:

答案 0 :(得分:1)

如果它不是您的HTTP服务器并且它不支持CORS或JSONP,您需要请求跨站点请求权限( systemXHR权限)并设置“type”:“ manifest.webapp 中的特权“

https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/manifest.webapp#L81

https://developer.mozilla.org/en-US/Apps/Developing/Packaged_apps#Types_of_packaged_apps

并在XHR对象上设置 mozSystem 属性:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Non-standard_properties

https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/contacts/js/fb/fb_query.js#L37

在jquery> = 1.5.1上,您应该可以使用$ .ajax上的 xhrFields 设置来设置它:

http://api.jquery.com/jQuery.ajax/

$.ajax({
  url: apiMangaeden[0],
  dataType: 'json',
  data: 'data',
  xhrFields: {
    mozSystem: true
  },
  success: function (data) {
    console.log('It works')
  }
});

答案 1 :(得分:0)

我推荐你CORS代理 CORS代理允许您站点上的JavaScript代码访问其他域上的资源,这些资源通常会因同源策略而被阻止。

http://www.corsproxy.com/

答案 2 :(得分:0)

相关问题