错误截图:
以下是我的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”标头。
答案 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