【问题标题】:NSURLRequest lost HTTP header “Authorization” while redirecting the requestNSURLRequest 在重定向请求时丢失了 HTTP 标头“授权”
【发布时间】:2014-06-16 18:35:33
【问题描述】:

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

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

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

URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    • 授权
    • 连接
    • 主机
    • WWW-认证

    【讨论】:

    • 谢谢你,拉法乌。我与 WWDC 实验室的 Apple 工程师就这个问题进行了交谈,他同意使用一些自定义字段(如“Authorization_”(带下划线))可能是一个很好的解决方案。看起来像 hack,但它在后台按预期工作
    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多