2016-09-15 15 views
1

があります。私は非常に奇妙な問題を抱えています。ことは、私がPATCHリクエストを送信しようとしているときに、サーバーにはAuthorizationヘッダーにトークンが含まれていないということです。 PUTリクエストでも同様です。スニッフィングを行い、Authorizationヘッダーがまったく送信されないことがわかりました。その他のタイプの要求にはAuthorizationヘッダーが含まれます。最初に、Alamofireフレームワーク特有の問題を考えましたが、NSURLConnectionリクエストとNSURLSessionタスクを使用すると、同じことができました。NO AUTHORIZATION HEADERが送信されました!ここでiOS PATCHリクエストで承認ヘッダーが削除される理由を教えてください。

がAlamofireに使用私のコードです:

Alamofire.request(.PATCH, path, parameters: ["email":"[email protected]"],  encoding: .JSON, headers: ["Authorization":"token \ ((User.sharedUser().token)!)"]).validate().responseJSON { (response) in 
      if response.response?.statusCode == 200{ 
       print("success") 
      }else{ 
       print("Error") 
      } 
     } 

、ここではNSURLConnectionを持つコードです:

let request:NSMutableURLRequest = NSMutableURLRequest(URL:url) 
request.HTTPMethod = "PATCH" 
request.addValue("\(token)", forHTTPHeaderField: "authorization") 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

do{ 
    let bodyData = try NSJSONSerialization.dataWithJSONObject(["email":"[email protected]"], options: []) 
    request.HTTPBody = bodyData 
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
    { 
     (response, data, error) in 
     if let mdata = data { 
      let contents = NSString(data:data, encoding:NSUTF8StringEncoding) 
      print(contents) 
     } else { 
      print(error?.localizedDescription) 
     } 
     } 
}catch{ 
    print("failed serialization") 
} 

答えて

2

IIRC、Authorizationヘッダには、独自の目的のためにNSURLSession埋蔵これらのヘッダーの1つです通常のHTTP認証のようなものを送信している場合は、独自の値で上書きすることができます。

代わりにX-Authorizationヘッダーを送信できますか?

+0

回答ありがとうございます。はい、私は他のヘッダーを使用できますが、なぜそれが文書化されていませんか? PUTおよびPATCH要求に対してのみ承認ヘッダを使用するのはなぜですか?そしてそれはそれを使用しないで(許可されたトラフィック)、承認ヘッダーを完全に削除します。ありがとう) –

+0

実際に文書化されています。 https://developer.apple.com/reference/foundation/nsmutableurlrequest?language=objcで「予約済みのHTTPヘッダー」を検索すると、検索されます。 – dgatwood

+0

これは時にはそれを取り除くことができるものの1つで、誤った安全感につながります。そして、基本的な認証などに見えるものを送信すると、突然それが踏み込まれます。そのヘッダーフィールドをより直接的に制御できるようにするためのデリゲートメソッドを尋ねるバグを書く価値があるかもしれません。 – dgatwood

関連する問題