使用Jquery使用跨域Web API

时间:2013-07-01 06:05:13

标签: javascript jquery

我正在尝试使用jQuery v1.9 $.ajax这样使用Mongolab WebAPI

$.ajax({
  url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
  type: "GET",
  contentType: "application/json"
});

我认为这是一个跨域请求,contentType应为application/javascript,dataType应为JSONP,但令人惊讶的是,它成功返回ContentType 'application/json'的json结果。我很困惑,如果jquery封装了ajax调用并自动使用application/javascript调用服务器。

有人可以给我一个解释,虽然这可能看起来像一个菜鸟问题吗?

2 个答案:

答案 0 :(得分:2)

当我尝试使用jsfiddle.net在safari中运行该代码时,我得到:

Failed to load resource: Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.

这意味着safari询问api.mongolab.com是否允许fiddle.jshell.net通过ajax调用访问它,而mongolab.com要么没有响应,要么回复“不,不允许” 。也许如果您的域名是localhost或者是使用mongolab注册的话,那么它将被允许执行。

但它只适用于现代浏览器。 http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

答案 1 :(得分:-1)

尝试将crossDomain设置为true

$.ajax({
  url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
  type: "GET",
  contentType: "application/json",
  crossDomain : true
});