在我正在构建的应用程序中,我需要向 API 发送一个安全的 POST 请求。请求的主体是 JSON。指定请求如下:
NSMutableURLRequest *urlRequest=[NSMutableURLRequest
requestWithURL:
[NSURL URLWithString: @"https://testserver.test:443/userinfo"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[urlRequest setValue:delegate.currentUser.token forHTTPHeaderField:@".ASPXAUTH"];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:postData];
NSURLConnection* connection = [[NSURLConnection alloc]
initWithRequest:urlRequest delegate:self];
这通常有效,但有时无效,然后会收到 400: HTTPS Required 消息。在服务器端,即使我在 URL 中指定了端口,这些尝试也显示请求被发送到端口 80 而不是 443(这甚至是必要的吗?)。
有什么我可能在这里遗漏的想法吗?
编辑:这是发生这种情况时我得到的响应
headers: {
"Cache-Control" = "no-cache";
"Content-Length" = 14;
"Content-Type" = "text/plain; charset=utf-8";
Date = "Tue, 16 Apr 2013 12:31:02 GMT";
Expires = "-1";
Pragma = "no-cache";
Server = "Microsoft-IIS/7.5";
"Set-Cookie" = "ARRAffinity=ed9f________________________________8ac4;Path=/;Domain=testserver.test:443, WAWebSiteSID=c390_________________0; Path=/; HttpOnly";
"X-AspNet-Version" = "4.0.30319";
"X-Powered-By" = "ASP.NET, ARR/2.5, ASP.NET";
}
编辑2:想法。
- 我是否必须以某种方式配置 NSMutableURLRequest 以确保它使用安全连接?还是 NSURLConnection?
- 为什么它有时有效,有时无效?