亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AFNetworking 和授權頭

AFNetworking 和授權頭

Go
蠱毒傳說 2021-08-23 17:32:23
我是 AFNetworking 的新手,我正在嘗試使用它來與我用 Go 編寫的 API 對話。我很難讓 Authorization 標頭工作。我已經子類化了 AFHTTPSessionManager 并將其配置如下+ (HMAPIClient *)sharedHMAPIClient{    static HMAPIClient* _sharedHMAPIClient = nil;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _sharedHMAPIClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:HMBaseURL]];    });    return _sharedHMAPIClient;}- (instancetype)initWithBaseURL:(NSURL *)url{    self = [super initWithBaseURL:url];    if (self) {        self.responseSerializer = [AFJSONResponseSerializer serializer];        self.requestSerializer = [AFJSONRequestSerializer serializer];        [self.requestSerializer setAuthorizationHeaderFieldWithUsername:RegistrationAPIKey                                                               password:@"Doesn't matter what goes here."];    }    return self;}- (void)hitTestEndpoint{    [self GET:@"testEndpoint" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {        NSLog(@"%@", responseObject);    } failure:^(NSURLSessionDataTask *task, NSError *error) {        NSLog(@"%@", error);    }];}當我調用 -(void)hitTestEndpoint 時,我在服務器日志中看到以下標頭(缺少授權):Key: Accept-Encoding Value: [gzip, deflate]Key: Connection Value: [keep-alive]Key: Accept-Language Value: [en;q=1]Key: User-Agent Value: [TestApp/2 (iPad Simulator; iOS 8.1; Scale/2.00)]Key: Accept Value: [*/*]為了進行比較,當我使用以下 curl 命令到達相同的端點時,curl https://api.example.com/v1/testEndpoint/ -u test_xqzwjcasogptbnpa:我看到以下標題:Key: Authorization Value: [Basic eHF6d2pjYXNvZ3B0Ym5wYTo=]Key: User-Agent Value: [curl/7.30.0]Key: Accept Value: [*/*]有人可以指出我正確的方向嗎?-謝謝更新: 我添加了 AFNetworkActivityLogger 以便我可以看到每個請求。確實包含了 Authorization 標頭。此外,我嘗試點擊http://headers.jsontest.com,它返回從客戶端收到的 HTTP 請求標頭。授權頭是存在于該輸出。所以,問題一定出在我的服務器上。我已經記錄了每個請求的所有標頭,但我不確定還能在哪里查看。要用 Go 標記這個問題,看看是否有人有想法。
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

您顯示的服務器日志看起來像 Go 已經解析它們之后的標頭。查看 Go 收到的原始純文本 HTTP 標頭會很有幫助。這會告訴你 Go 是否忽略了標頭,或者上游是否正在剝離它。

編輯:不知道為什么 Go 會Authorization在給你所謂的原始請求之前去掉標題。但我認為Authorization標頭通常只有在發出先前未經授權的請求并從帶有WWW-Authenticate標頭的服務器獲得 401 響應后才由客戶端發送。由于聽起來您的客戶端正在Authorization突然發送標頭,因此 Go 服務器 API 可能會忽略并剝離標頭,因為它從未要求客戶端發送它。

如果您只想在每個請求上發送一個簡單的 auth 令牌,那么如果您只是使用一個虛構的X-標頭來代替,因為您表示您設置的其他標頭可以正常到達怎么辦?


查看完整回答
反對 回復 2021-08-23
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號