NSURLRequest在重定向请求时丢失了HTTP标头“授权”

时间:2014-04-30 12:28:19

标签: objective-c redirect http-headers nsurlrequest nsurlsession

我们在后台模式下从服务器下载文件时遇到问题。将请求重定向到另一台服务器时,HTTP标头“授权”字段丢失。

我们做了一些实验并注意到其他字段(即使是相同但最后用“下划线”符号“Authorization_”)在重定向中完美地工作。看起来这个字段根据一些安全原因被删除,例如,如果不同的服务器使用不同的认证数据。

可以使用

在前台模式下手动附加“授权”字段
URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:

方法。我们尝试在后台模式下使用重定向请求时出现问题。因为根据文档“后台会话中的任务自动遵循重定向。”。

我在RFC 2616中找不到关于跳过此字段的任何内容,但是假设在后台模式下重定向期间可能存在一些未记录的解决方案来保存“授权”字段。

让我假设我们的前端服务器可能会在重定向响应中提供一些特殊字段,表示重定向服务器是可信任的,我们可以使用“授权”字段而不做任何修改。

这只是一个想法,我们可能不得不以其他方式使用它。你能指点我们吗?

1 个答案:

答案 0 :(得分:3)

'授权'标题是来自“特殊”标题的标题,建议不要修改。这来自Apple的文档(LINK):

  

NSURLConnection类和NSURLSession类旨在为您处理HTTP协议的各个方面。因此,您不应修改以下标题:

     
      
  • 授权
  •   
  • 连接
  •   
  • 主机
  •   
  • WWW验证
  •