AFNetworking通过请求发送标头

时间:2017-01-29 11:48:21

标签: ios objective-c afnetworking

我一直在搜索几个小时,找到像this这样的答案: 但是当我发送这样的授权时:

    AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
        manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
        manager.requestSerializer = [AFJSONRequestSerializer serializer];
        //header = [header stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

        //[manager.requestSerializer setValue:@"text/json" forHTTPHeaderField:@"Accept"];
        //[manager.requestSerializer setValue:@"text/json" forHTTPHeaderField:@"Content-Type"];
        [manager.requestSerializer setValue:header forHTTPHeaderField:@"Authorization"];
        /*
        NSLog(@"headers: %@",manager.requestSerializer.HTTPRequestHeaders);
        this printed : {
            "Accept-Language" = "en;q=1";
            Authorization =  "Bearer eyJ0eXAiO";
            "User-Agent" = "Virtuocity/1.0 (iPhone; iOS 10.2; Scale/2.00)";
        }
        */
        [manager GET:url parameters:dic progress:^(NSProgress * _Nonnull downloadProgress) {
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            block(responseObject,nil);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            block(nil,error);
        }];

但是服务器给了我以下错误:

serialization.response Code=-1011 "Request failed: unauthorized (401)  headers {
    "Access-Control-Allow-Headers" = "accept, accept-language, content-type, accept, authorization, moduleid, tabid, x-dnn-moniker";
    "Access-Control-Allow-Methods" = "GET, POST, PUT, HEAD, OPTIONS";
    "Access-Control-Allow-Origin" = "*";
    "Cache-Control" = "no-cache";
    "Content-Length" = 61;
    "Content-Type" = "text/json; charset=utf-8";
    Date = "Sun, 29 Jan 2017 10:18:36 GMT";
    Expires = "-1";
    Pragma = "no-cache";
    "Set-Cookie" = "dnn_IsMobile=False; path=/; HttpOnly, dnn_IsMobile=False; path=/; HttpOnly, language=en-US; path=/; HttpOnly";
}

我观察到错误返回的标题不包含我发送的“授权”标题,我怀疑这是因为标题中发送的空格,所以我不知道出了什么问题,我在 POST MAN 上尝试了相同的请求并完美地工作,现在该做什么?

1 个答案:

答案 0 :(得分:1)

我发现AFNetworking默认发送某种cookie,如果有cookie需要检查,我正在处理的api将不会检查授权,所以我禁止使用此行发送cookie并且它正常工作^ __ ^ < / p>

[manager.requestSerializer setHTTPShouldHandleCookies:NO];
相关问题