我是 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-
標頭來代替,因為您表示您設置的其他標頭可以正常到達怎么辦?
- 1 回答
- 0 關注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消