Angularjs jsonp请求
2018-08-16 本文已影响51人
泡泡是只猫
最近在研究Angularjs 1.6的跨域请求,尝试了很久,做个记录。
设置访问白名单
app.config(($sceDelegateProvider) => {
...
$httpProvider.useApplyAsync(true);
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'http://localhost:8080/**'
]);
Client端的示例,用jsonCallbackParam来设置Callback。
var trustedUrl = $sce.trustAsResourceUrl(url);
$http.jsonp(trustedUrl, {jsonpCallbackParam: 'jsonpCallback'}).then(function(data) {
console.log(data);
});
Rest Server端的示例。 注意这里entity中采用angular.callbacks._0包装返回结果,并且采用设置header("Access-Control-Allow-Origin", "*")
@GET
@Path("/login")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public Response login(@Context HttpServletRequest request) throws JSONException {
return Response.ok().entity("angular.callbacks._0({\"token\":\"" + user.toString() + "\"})").header("Access-Control-Allow-Origin", "*").build();
}