ios - NSURLSessionUploadTask 返回 HTTP 403 错误页面

标签 ios http swift nsurlsession

我遇到了一个很奇怪的问题。我正在尝试将图像上传到 PHP 脚本。构建编译没有错误,这是我所期望的,但是当 session 实际完成时,它返回 HTTP 错误 403。我知道 403 是“禁止的”,但我不知道可能是什么导致错误。这是 session 。

func uploadFile(fileData: NSData) {
    var request: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "https://www.codekaufman.com/file.php")!)
    request.HTTPMethod = "POST"

    let session = NSURLSession(configuration: .defaultSessionConfiguration())

    let uploadTask = session.uploadTaskWithRequest(request, fromData: fileData, completionHandler:{
        data, response, error in
        if error != nil {
            println(error)
            return
        }

        println(response.description)
        println()

        var err: NSError?
        var receivedData: [String: AnyObject]!
        receivedData = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as? [String: AnyObject]

        if(receivedData != nil) {
            println(receivedData)
        } else {
            println("No data recieved.")
        }

    })

    uploadTask.resume()
}

这是 PHP 脚本,没什么特别的。

<?php

error_reporting(E_ALL);
ini_set('display errors', 1);

if(isset($_FILES['file'])) {
    echo json_encode(array('status' => 'true'));   
} else {
    echo json_encode(array('status' => 'false'));  
}

?>

最后是回复。

<NSHTTPURLResponse: 0x7ff4f062bd10> { URL: https://www.codekaufman.com/file.php } { status code: 403, headers {
    "Accept-Ranges" = bytes;
    Connection = "Keep-Alive";
    "Content-Length" = 1551;
    "Content-Type" = "text/html";
    Date = "Fri, 13 Feb 2015 08:05:55 GMT";
    "Keep-Alive" = "timeout=10, max=200";
    Server = Apache;
} }

我应该注意到控制台显示“未收到数据”。我在 SO 聊天室“NSChat”中四处询问,我们已经尝试修复它。虽然我们没有修复它,但我们发现它没有收到身份验证质询。

此外,我不知道该怎么做。任何帮助深表感谢。谢谢。

最佳答案

不幸的是,虽然我不能说为什么会这样,但我发现添加这行

request.addValue("application/form-data", forHTTPHeaderField: "Content-Type")

解决了我所有的问题。服务器响应 200,我收到了预期的 JSON 响应。感谢那些试图提供帮助的人,尽管他们没有回答我的问题,但你们让我注意到了一些重要的观点。

关于ios - NSURLSessionUploadTask 返回 HTTP 403 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523477/

相关文章:

swift - 为什么 UITableViewDiffableDataSource cellProvider 参数返回 nil tableViewCell ?

ios - 尝试使用 Realm 时应用程序崩溃 SIGABRT

iphone - 使用 UIScrollView

ios - 如何通过自动换行获取UITextView的内容高度

php - 将 iPhone HTTP 请求发送到 Apache PHP 网络服务器

http - 用于恢复未知长度文件的内容范围

ios - 检测 AVPlayer 中的视频停顿

ios - 查找来自每个发件人的最新消息?

objective-c - @属性赋值

iOS ionic 3 - iOS iphone 设备上的 CORS 错误 - 来源本地主机 :8080 is not allowed by Access-Control-Allow-Origin