2016-09-15 1 views
1

있습니다. 나는 아주 이상한 문제가있다. 문제는 서버가 요청 메시지를 보내려고 할 때 인증 헤더에 토큰이 들어 있다고 말합니다. PUT 요청에 대해서도 마찬가지입니다. 스니핑을 시도하여 인증 헤더가 전혀 전송되지 않음을 알았습니다. 다른 유형의 요청은 Authorization 헤더를 포함합니다. 처음에는 Alamofire 프레임 워크의 특정 문제를 생각했지만 NSURLConnection 요청과 NSURLSession 작업을 사용하여 나에게도 동일한 결과가 나타났습니다. NO AUTHORIZATION HEADER is Sent!iOS PATCH 요청에서 인증 헤더가 삭제되는 이유는 무엇입니까?

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와 코드입니다 : 여기

내 코드는 Alamofire에 사용되는

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 보유 , 그리고 보통의 HTTP 인증처럼 보이는 것을 보내는 경우에는 특히 자체 값으로 덮어 쓸 수 있습니다.

X-Authorization 헤더를 대신 보낼 수 있습니까?

+0

답장을 보내 주셔서 감사합니다. 그렇습니다. 다른 헤더를 사용할 수는 있지만 문서화되지 않은 이유는 무엇입니까? PUT 및 PATCH 요청에 대해서만 승인 헤더를 사용하는 이유는 무엇입니까? 그리고 그것을 사용하지 않고 인증 헤더를 완전히 제거합니다 (스니핑 된 트래픽). 감사합니다) –

+0

실제로 설명되어 있습니다. https://developer.apple.com/reference/foundation/nsmutableurlrequest?language=objc에서 "Reserved HTTP Headers"를 검색하면 찾을 수 있습니다. – dgatwood

+0

이것은 때로는 벗어날 수있는 것들 중 하나이기 때문에 잘못된 보안 감각으로 이어집니다. 그리고 나서 여러분이 기본 인증이나 그 무엇과 같이 너무 많이 보이는 것을 보내면 갑자기 밟히게됩니다. 헤더 필드를 좀 더 직접적으로 제어 할 수있는 델리게이트 메소드를 요청하기 위해 버그를 제출할 가치가 있습니다. – dgatwood