泽西岛 - 对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-Origin'

时间:2016-04-14 04:21:49

标签: jersey cors

错误截图:

enter image description here

以下是我的API类,我在其中编写了@OPTIONS方法的代码。

@OPTIONS 
    public Response OptionsFirstRequst(){
         return Response.ok()
      .header("Access-Control-Allow-Origin", "*")
      .header("Access-Control-Allow-Methods", "*")
      .header("Access-Control-Allow-Headers", "*").build();
    }

我创建了一个名为Response Builder的类,使用该类为每个请求发送响应。 以下是Response Builder类的代码:

    public class ResponseBuilder {

    public int status;
    public HashMap data;
    public String error;

    public static Response ok(int Status_code, HashMap<String, String> data, String Response_error) {
        if (data == null) {
            data = new HashMap();
        }

        ResponseBuilder response = new ResponseBuilder();
        response.status = Status_code;
        response.data = data;
        response.error = Response_error;

        return Response.status(Status_code).entity(response)
                .header("Access-Control-Allow-Origin", "*")
                .header("Access-Control-Allow-Methods", "*")
                .header("Access-Control-Allow-Headers", "*").build();
    }

    public static Response error(int Status_code, HashMap<String, String> data, String Response_error) {
        if (data == null) {
            data = new HashMap();
        }

        ResponseBuilder response = new ResponseBuilder();
        response.status = Status_code;
        response.data = data;
        response.error = Response_error;
        response.data = new HashMap();

        return Response.status(Status_code).entity(response)
                .header("Access-Control-Allow-Origin", "*")
                .header("Access-Control-Allow-Methods", "*")
                .header("Access-Control-Allow-Headers", "*").build();
    }

}

我还有一个Request过滤器,用于验证每个请求的令牌,登录除外。

我能够登录,生成令牌并将其返回给浏览器。 但登录后如果点击个人资料。

我的响应为200(如浏览器的dev-tools网络所示),但我没有得到任何数据/正确的响应。

我收到以下错误。

对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。

1 个答案:

答案 0 :(得分:3)

要检查和添加CORS标头,常见的解决方案是使用javax.ws.rs.container.ContainerResponseFilter。这是一个示例,其中允许的原点在类#import "CustomCell.h" - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ID_CustomCell"; CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nil){ cell = (CustomCell *)[[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } return cell; } 中配置:

ApplicationConfig.accessControlAllowedOrigins