文件创建来自localhost,但不适用于移动

时间:2017-10-27 00:04:22

标签: javascript ios rest cors phonegap

我正在尝试向远程RESTful API发送文件创建请求。

每当我从本地服务器执行此操作时,它都可以正常工作。每当我从iOS设备执行此操作时,它都会因CSRF验证失败而失败。据我所知,这不应该发生,因为它是在两个设备上执行的完全相同的代码...

这是使用PhoneGap / Cordova构建的。 iOS的版本是iOS 11,iOS设备是iPhone 8。

以下是代码:

    var mathRandom = Math.random();
    var data = {"file": {
            "file": base64,
            "filename": localStorage.username + mathRandom + ".jpg",
            "filepath": "public://" + localStorage.username + mathRandom + ".jpg"
        }
    };
    var result = $.ajax({
        type: "POST",
        data: data,
        url: SITE_URL + "/" + ENDPOINT + '/file.json',
        dataType: 'json',
        async: false,
        error: function (jqXHR, textStatus, errorThrown) {
            moduleDebugger('account', errorThrown, "FILE SAVE ERROR");
            return 'null';
        },
        success: function (data, textStatus, jqXHR) {
            moduleDebugger('account', data, 'success');

        }
    });

(是的,我知道它是异步的,但是这段代码绝对必须在它之后的任何事情之前执行 - 我对用户体验的降级很好)

我使用的是同一个用户,当前设置了权限,以便任何人都能够创建文件,甚至匿名(用于测试)。

我的CORS设置如下:

Internal path
Access-Control-Allow-Origin. Use <mirror> to echo back the Origin header.
Access-Control-Allow-Methods
Access-Control-Allow-Headers
Access-Control-Allow-Credentials

*|<mirror>|GET, PUT, POST, DELETE|Content-Type, Authorization, X-CSRF-Token|true

什么会阻止移动用户保存文件,而不是来自localhost的用户?请注意,保存文件的服务器对这两个设备都是远程的。

这是错误消息:

  

无法加载资源:服务器响应状态为401   (未经授权:CSRF验证失败)

我也收到错误:

  

无法加载资源:数据网址解码失败

但我不确定它是否与上述错误有关 - 在此错误发生后会出现一段时间。我一直无法确定导致它发生的原因。

编辑:即使是我在localhost上反复测试的静态base64字符串也无法正常工作。

0 个答案:

没有答案