首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionUploadTask返回HTTP403错误页

NSURLSessionUploadTask返回HTTP403错误页
EN

Stack Overflow用户
提问于 2015-02-15 14:04:22
回答 1查看 1.8K关注 0票数 1

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

代码语言:javascript
复制
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脚本,没什么特别的。

代码语言:javascript
复制
<?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'));  
}

?>

最后,这是响应。

代码语言:javascript
复制
<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;
} }

我要注意的是,控制台显示"No data received“。我已经在SO聊天室“NSChat”中打听过了,我们也在尝试修复它。虽然我们没有修复它,但我们发现它没有收到身份验证挑战。

此外,我不知道该怎么办。任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-16 14:00:11

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

代码语言:javascript
复制
request.addValue("application/form-data", forHTTPHeaderField: "Content-Type")

解决了我所有的问题。服务器返回200,我如期收到JSON响应。感谢那些试图帮助我的人,尽管没有回答我的问题,但你们给我带来了一些重要的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28523477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档