Phonegap - iOS 文件传输不适用于授权标头

Posted

技术标签:

【中文标题】Phonegap - iOS 文件传输不适用于授权标头【英文标题】:Phonegap - iOS filetransfer not working with authorization header 【发布时间】:2013-01-11 22:12:22 【问题描述】:

我正在尝试将从相机捕获的图像上传到服务器。下面的方法适用于任何 android 设备,但由于某种原因,它在 ios 上失败了。它返回一个 401 错误,这没有意义:

var options = new FileUploadOptions();
    options.fileKey="files[]";
    options.fileName = 'image_' + obj.id + '.jpg';
    options.mimeType="image/jpeg";
    options.chunkedMode = false;

    var params = new Object();
    params.headers = 
        Authorization: 'Basic ' + loginCreds
    

    options.params = params;
    var ft = new FileTransfer();
    ft.upload(imageURI, CONTEXT+'URL/files", 
        function(r)
            alert('Finished upload!');
            $.mobile.loading( 'hide' );  
        , 
        function(error)
            console.log(error.http_status);
            alert('Error uploading image: ' +error.http_status+ ' and code - ' +error.code); 
            $.mobile.loading( 'hide' );  
        , 
        options, true);

我知道在 iOS 中设置标题存在问题,但我认为这已从 Phonegap 1.9.0 修复。我在这里做错了吗?

我检查了服务器日志,似乎授权标头只是没有在 iOS 中设置。奇怪……

【问题讨论】:

【参考方案1】:

经过一整天的努力,终于想出了这个。事实证明,Android 和 iOS 在获取 headers 参数的方式上有所不同。

安卓:

var params = new Object();
params.headers = Authorization: 'Basic ' + loginCreds;
options.params = params;

options.headers = Authorization: 'Basic ' + loginCreds;

iOS:

options.headers = Authorization: 'Basic ' + loginCreds;

希望这可以在某个地方为某人省去一些麻烦......

【讨论】:

你让我免于用头撞墙。谢谢! 省了很多麻烦 它节省了我很多时间

以上是关于Phonegap - iOS 文件传输不适用于授权标头的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap fileTransfer.Download 不适用于 ios phonegap 3.0

inAppBrowser 插件不适用于 Phonegap 3.3.0 和 iOS

PhoneGap 相机 API 不适用于 iOS

为啥 WebSQL 不适用于使用 PhoneGap 制作的 iOS 应用程序?

跨域不适用于 ios phonegap

Ngbdropdown点击事件不适用于带有角度8运行cordova的ios phonegap