【问题标题】:ionic yii2 Response for preflight has invalid HTTP status code 500ionic yii2 预检响应具有无效的 HTTP 状态代码 500
【发布时间】:2016-03-30 23:54:57
【问题描述】:

我有一个 Ionic 应用程序,我正在尝试做一个 POST:

$http({
  url: url+'/usuario/log', 
  method: 'POST',
  data: {usuario : $scope.data.usuario, senha:$scope.data.senha},
  headers : {'content-type':'application/json; charset=UTF-8'}
}).then(function(result) { ... });

在服务器端我有一个 Yii2 应用程序:

public function actionLog(){
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: *");
    header("Access-Control-Allow-Headers: content-type");

    $params = json_decode(file_get_contents('php://input'),true);
    $usuario = $params['usuario'];
    $senha = $params['senha'];

    ...
}

但我得到的错误总是这个,我发送一个 POST 并得到一个 OPTIONS

OPTIONS http://www.nexusolucoes.com.br/personal/web/usuario/log
XMLHttpRequest cannot load http://www.nexusolucoes.com.br/personal/web/usuario/log. Response for preflight has invalid HTTP status code 500

【问题讨论】:

    标签: header ionic-framework yii2 cors


    【解决方案1】:

    问题似乎与CORS有关,如果后端与前端位于不同的域中,浏览器将始终首先发送OPTIONS请求,以确认前端域允许跨域共享。

    如果浏览器对 OPTIONS 得到正确响应,则 POST 请求(您想要的)将照常触发。

    总而言之,您需要: 在 URL 管理器上添加一个映射,以响应您发送 POST 的完全相同 URL 的 OPTIONS 动词。然后,您需要在控制器中创建一个操作,或者使用 Yii 的 yii\rest\OptionsAction 以及 CORS 过滤器来允许前端域发出 POST 请求。

    请查看以下链接了解更多信息:

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2016-01-18
      • 2017-09-26
      • 2016-04-14
      • 2018-03-04
      • 1970-01-01
      • 2016-02-08
      • 2017-03-15
      • 2017-05-10
      相关资源
      最近更新 更多