Angular $ http.jsonp - 服务器不接受JSON_CALLBACK

时间:2013-12-13 09:34:42

标签: javascript api angularjs jsonp

一切都在问题中。

我必须使用一个API,它只允许我使用$ http.jsonp使用angular进行请求。我从服务器正确地得到了响应,但angular认为请求失败,因为我没有使用callback=JSON_CALLBACK。当我在请求中添加回调时,服务器向我发回错误500,因为它不允许除文档中的参数之外的任何其他参数。

我该怎么办?我不知所措

由于

1 个答案:

答案 0 :(得分:1)

为了让JSONP工作,它需要服务器端支持。如果您使用的API不提供对JSONP的任何支持,那么您根本无法使用JSONP。

为了让JSONP工作,服务器必须包装它在函数调用中返回的JSON。通常,支持JSONP的API将有某种方式传递它可用作回调的函数的名称。这不是标准的,每个API可能有不同的方式来指定回调。如果API不支持指定回调,那么实际上你运气不好。

我唯一能想到的是,如果API所在的服务器支持CORS。 CORS是一种比JSONP更好的替代方案,用于制作跨域请求,但仅适用于现代浏览器。

唯一的另一种选择是让您自己的服务器代表浏览器代理请求。这样做的缺点是,该第三方API的所有流量必须通过您自己的应用程序域。