我正在尝试将文件上载到我的个人服务器上。
到目前为止,我已经写了一个很小的php页面,工作得很完美。
有点奇怪的是,我生成了要发送的http消息的所有主体(比如说大约4mb),然后将请求发送到服务器。
然后,服务器请求http质询,而我的委托连接:didReceiveAuthenticationChallenge:challenge使用正确的凭据和数据回复服务器。
但是,发生了什么事?数据已发送两次!
事实上,我注意到当我添加progressbar时…应用程序发送数据(4MB),服务器请求身份验证,应用程序使用身份验证重新发送数据(另一4MB)。所以,最后,我已经发送了8MB。那是错误的。
我开始搜索并寻找解决方案,但我不知道如何解决这个问题。
案例场景有两种(我猜):
共享整个会话的领域(一个最小的http请求,然后是质询,然后是数据)
使用synchronized方式来执行http连接(我不想做的事情,因为对我来说,这似乎是一种处理此类事情的丑陋方式)
谢谢你
最佳答案
您在http协议中遇到了一个缺陷:必须先发送所有数据,然后才能使用auth challenge获取响应(当您发送一个没有凭据的请求时)。您可以尝试做一个小的往返,作为同一会话中的第一个请求(如您所提到的),比如head请求,然后将来的请求将共享相同的nonce。
关于iphone - 如何在iPhone上正确处理HTTP摘要验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2827258/