NSURLRequest在重定向请求时丢失了HTTP头“Authorization”

8

我们遇到了一个关于后台下载文件的问题。在重定向请求到另一个服务器时,HTTP头部中的“Authorization”字段丢失了。

我们进行了一些实验,发现其他字段(即使是带下划线符号结尾的相同字段“Authorization_”)在重定向中也能正常工作。看起来这个字段被删除是出于某些安全原因,比如不同的服务器使用不同的身份验证数据。

可以在前台模式下手动添加“Authorization”字段。

URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:

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

我在RFC 2616中找不到有关跳过此字段的任何信息,但是假设可能有一些未记录的解决方案可以在后台模式下保存“授权”字段。

让我假设我们的前端服务器可以在重定向响应中提供一些特殊字段,该字段将说明被重定向的服务器是可信的,并且我们可以使用“授权”字段而不进行任何修改。

这只是一个想法,可能我们必须以其他方式使用它。请指导我们该怎么做?

1个回答

3
“Authorization”头是“特殊”的头部之一,建议不要进行修改。这来自于苹果的文档(链接):
NSURLConnection类和NSURLSession类旨在为您处理HTTP协议的各个方面。因此,您不应该修改以下标头: - 授权 - 连接 - 主机 - WWW-Authenticate

谢谢你,Rafał。我在WWDC实验室与苹果工程师交谈过这个问题,他同意使用一些自定义字段,比如“Authorization_”(带下划线),可能是一个好的解决方案。看起来像是一个hack,但它在后台按预期工作。 - gN0Me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接