一切都在问题中。
我必须使用一个API,它只允许我使用$ http.jsonp使用angular进行请求。我从服务器正确地得到了响应,但angular认为请求失败,因为我没有使用callback=JSON_CALLBACK
。当我在请求中添加回调时,服务器向我发回错误500,因为它不允许除文档中的参数之外的任何其他参数。
我该怎么办?我不知所措
由于
答案 0 :(得分:1)
为了让JSONP工作,它需要服务器端支持。如果您使用的API不提供对JSONP的任何支持,那么您根本无法使用JSONP。
为了让JSONP工作,服务器必须包装它在函数调用中返回的JSON。通常,支持JSONP的API将有某种方式传递它可用作回调的函数的名称。这不是标准的,每个API可能有不同的方式来指定回调。如果API不支持指定回调,那么实际上你运气不好。
我唯一能想到的是,如果API所在的服务器支持CORS。 CORS是一种比JSONP更好的替代方案,用于制作跨域请求,但仅适用于现代浏览器。
唯一的另一种选择是让您自己的服务器代表浏览器代理请求。这样做的缺点是,该第三方API的所有流量必须通过您自己的应用程序域。