我已经部署了一个简单的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和端口替换了*。但是我无法解决问题。
请帮助我!
答案 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。