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

gN0*_*0Me 8 redirect objective-c nsurlrequest http-headers nsurlsession

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

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

可以使用在前台模式下手动附加"授权"字段

URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:
Run Code Online (Sandbox Code Playgroud)

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

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

让我假设我们的前端服务器可能在重定向响应中提供一些特殊字段,可以说重定向服务器是可信任的,我们可以使用"授权"字段而无需任何修改.

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

Raf*_*iak 3

“授权”标头是建议不要修改的“特殊”标头之一。这是来自苹果的文档(链接):

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

  • 授权
  • 联系
  • 主持人
  • WWW-验证