我正在开发一个AngularJS应用程序中调用与播放框架2.2.0开发的REST API。
我有相关的跨域Ajax调用的角应用程序和玩一会不在同一个站点上托管的问题。
这里是JS调用在我的角度服务:
$http
.post("http://localhost:9001/category/list", { langCode: 'fr-FR' })
.success(function(data, status, headers, config) {
callback(data.items);
})
.error(function(data, status, headers, config) {
console.log("Error Data : " + data);
console.log("Error Status : " + status);
});
这里是我的播放应用程序的路径:
POST /category/list controllers.catalog.ProductCategoryController.list()
- 如果我不请求发送任何数据,一切工作正常
- 如果我发送数据时,我有一个关于ACCESS_CONTROL_ALLOW_ORIGIN阿贾克斯错误,ACCESS_CONTROL_ALLOW_HEADERS
我唯一的解决方法如下:
拦截全球一流的所有请求,并添加页眉
@Override public Action onRequest(Request request, Method method) { return new Action.Simple() { @Override public Promise<SimpleResult> call(Context ctx) throws Throwable { Logger.debug("Intercepting request and applying CORS headers..."); ctx.response().setHeader(Controller.ACCESS_CONTROL_ALLOW_ORIGIN, "*"); ctx.response().setHeader(Controller.ACCESS_CONTROL_ALLOW_HEADERS, "Content-Type"); return delegate.call(ctx); } }; }
添加另一条路线,在路线选项
OPTIONS /category/list controllers.catalog.ProductCategoryController.list()
有没有使集成比简单的一种方式?