未找到离子发布请求文件

时间:2016-04-20 20:05:22

标签: android angularjs cordova ionic-framework

我试图通过在Android设备(6.0.1)上运行我的应用来发出简单的帖子请求。 AFAIK在执行此操作时没有CORS问题,但控制台输出:

(apiurl正在替换实际网址的原因,实际的网址是IP地址)

POST file:///android_asset/www/apiurl net::ERR_FILE_NOT_FOUND

我已添加了cordova白名单插件并设置了我的内容安全政策:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

这是我的帖子请求代码:

$scope.powerPrompt = function() {
    var pwr = alert("Power On");
    $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    $http({
      method: 'POST',
      url: 'apiurl',
      data: "data to be sent",
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function(response) {
      // handle success things
      alert("success");
    })
    .error(function(data, status, headers, config) {
      // handle error things
    })

2 个答案:

答案 0 :(得分:2)

如评论中所述,您需要确保在网址前加上http://,否则会尝试通过file://访问文件系统,这就是您收到文件未找到错误的原因。

确保您以下列格式提出请求:

http://<api url>:<ports if necessaray>/path/

答案 1 :(得分:1)

您使用的是相对网址 - 这不起作用,因为您的index.html加载了file://网址。

http://<your host>:<port>/path/to/resource作为url参数,它应该按预期工作。

在Android平台上运行应用程序时,使用http作为协议时AFAIK应该没有太大问题。但是你可以在iOS上遇到问题。根据应用程序的类型,通常最好在服务器上使用SSL加密的网络流量。如果您没有SSL证书,请尝试Let's Encrypt