有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java响应的HTTP状态代码为500,没有“AccessControlAllowOrigin”头

我部署了一个简单的java web服务(比如说/diagnosis)。当我点击URL(/diagnosis)时,我得到了JSON输出。当我试图通过Angular JS访问rest服务(/诊断)时,我得到了:

请求的资源上不存在“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) 个答案

  1. # 1 楼答案

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

    因为你的地图永远不会工作。它只支持GET方法,如果有不同的http方法,比如选项(对于CORS),它将不提供服务

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

    将其更改为@RequestMapingwith method选项:要映射到的HTTP请求方法,缩小主要映射范围:GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE