0

我无法在我的离子应用程序中对我的服务器进行 REST API 调用。它显示以下错误。

ionic.bundle.js:25005 选项https://website.com/api/ionic_test 406(不可接受)

XMLHttpRequest 无法加载https://website.com/api/ionic_test。预检响应具有无效的 HTTP 状态代码 406

API 调用代码。

$http.post(API_ENDPOINT.url + '/ionic_test', user).then(function(result) {
                    if (result.data.status) {
                        storeUserCredentials(result.data.token);
                        resolve(result.data.msg);
                    } else {
                        reject(result.data.msg);
                    }
                });

ionic.config.json

{
  "name": "adminPanel",
  "app_id": "",
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://website.com/api"
    }
  ]
}
4

2 回答 2

1

问题出在你的服务器上。在评论中,您说 API 在浏览器中有效,但在您的应用中无效。那是因为您的浏览器不会发送OPTIONS“预检”请求,而 Ionic 会发送。

您需要禁用预检请求,或者配置您的服务器以正确处理它。

于 2017-01-31T20:33:37.787 回答
0

在您的应用配置中使用这些来解决预检问题

$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};

例如。

angular.module('yourApp', [])

.config(function ($stateProvider, $httpProvider, $urlRouterProvider) {

    //To solve Response for preflight has invalid HTTP 
    $httpProvider.defaults.headers.common = {};
    $httpProvider.defaults.headers.post = {};
    $httpProvider.defaults.headers.put = {};
    $httpProvider.defaults.headers.patch = {};


    //--------------------------------------

    // your routes here
});

于 2017-02-01T15:49:16.317 回答