响应的HTTP状态码为500,没有“ Access-Control-Allow-Origin”标头

时间:2018-10-10 09:33:15

标签: java cors jax-rs internal-server-error

我已经部署了一个简单的Java Web服务(例如/ diagnosis)。当我点击URL(/ diagnosis)时,我正在获取JSON输出。当我尝试通过Angular JS访问其余服务(/诊断)时,我得到了:

所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:4201”。响应的HTTP状态码为500。

我的Java代码是:

@GET
@Path("/DiagnosisSortProviderCost")
@Produces(MediaType.APPLICATION_JSON)
public Response DiagnosisSortProviderCost() throws Exception {

    // String path_name = "C:\\Users\\526761\\Desktop\\PioDel\\";
    JSONArray jsonArr = jsonread.json_extract_provider(path_name);

    System.out.println("--");
    System.out.println(jsonArr);

    Response response = Response.status(200).entity(jsonread.pro_DiagProvCost(jsonArr))
            .header("Access-Control-Allow-Origin", "*").build();

    return response;
}

我添加了代码来解决CORS筛选器问题,甚至用IP和端口替换了*。但是我无法解决问题。

请帮助我!

1 个答案:

答案 0 :(得分:0)

@GET
@Path("/DiagnosisSortProviderCost")
@Produces(MediaType.APPLICATION_JSON)

因为您的映射将永远无法工作。它仅支持GET方法,如果使用不同的http方法(如OPTIONS(用于CORS)),则将无法使用。

所有浏览器将首先发送OPTIONS,以在发送实际请求之前检测允许的方法。如果不支持OPTIONS或不支持http方法,浏览器将阻止它。

使用方法选项将其更改为@RequestMaping:要映射到的HTTP请求方法,以缩小主要映射:GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE。