最近在研究Angularjs 1.6的跨域請求谒亦,嘗試了很久鹿响,做個記錄周伦。
設(shè)置訪問白名單
app.config(($sceDelegateProvider) => {
...
$httpProvider.useApplyAsync(true);
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'http://localhost:8080/**'
]);
Client端的示例郑现,用jsonCallbackParam來設(shè)置Callback湃崩。
var trustedUrl = $sce.trustAsResourceUrl(url);
$http.jsonp(trustedUrl, {jsonpCallbackParam: 'jsonpCallback'}).then(function(data) {
console.log(data);
});
Rest Server端的示例荧降。 注意這里entity中采用angular.callbacks._0包裝返回結(jié)果,并且采用設(shè)置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();
}