ember.js

时间:2017-01-30 12:27:52

标签: javascript ember.js cors

我正在使用ember.js,它给我带来了这个错误:

  

XMLHttpRequest无法加载http://127.0.0.1:20000/accounts/0。响应   预检请求未通过访问控制检查:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:4200”   访问。

在我的服务器端,我已经放置了代码来打印出GET,POST和PUT调用的日志。它不打印任何东西。因此,我认为客户端从未向服务器发出任何请求。 (但是,手动访问“http://127.0.0.1:20000/accounts/0”确实会调用GET方法上的日志。)

服务器端已编码为返回Access-Control-Allow-Origin,它适用于其他方法。

那么,我的问题是什么?

只是为了记录,Java中的服务器端是:

responseBuilder.header("Access-Control-Allow-Origin", "http://localhost:4200");
responseBuilder.header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization, auth-token");
responseBuilder.header("Access-Control-Allow-Credentials", "true");
responseBuilder.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
responseBuilder.allow("OPTIONS");

在我的ember.js config / environment.js中我有:

ENV['contentSecurityPolicy'] = {
        'default-src': "*"
    };

1 个答案:

答案 0 :(得分:0)

解决:

private static void setAccessControlAllowOrigin(ServletContextHandler context) {
        FilterHolder holder = new FilterHolder(CrossOriginFilter.class);
        holder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
        holder.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "http://127.0.0.1:4200");
        holder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,POST,PUT,HEAD");
        holder.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin");
        holder.setName("cross-origin");
        FilterMapping fm = new FilterMapping();
        fm.setFilterName("cross-origin");
        fm.setPathSpec("*");
        context.getServletHandler().addFilter(holder, fm);
    }