Вопросы возникли при разработке angular приложения для этого апи.
1. Пробую авторизоваться:
Код: Выделить всё
this.http
.post(
'http://localhost/users/login',
JSON.stringify({
"LoginForm": {
"username":'UserLogin',
"password":'Userpassword'
}
}),
config
)
1. Если ни чего не указывать на сервер уходит POST запрос, Request Payload
{LoginForm: {username: "UserLogin", password: "Userpassword"}}
2. Если заголовок указать application/x-www-form-urlencoded на сервер уходит POST запрос с
Form Data
{"LoginForm":{"username":"UserLogin","password":"Userpassword"}}:
3. Если указать в заголовке application/json; charset=utf-8 - на сервер, вместо POST уходит OPTIONS - получаю 403 ошибку, хотя в контроллере указано:
Код: Выделить всё
// add CORS filter
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Method' => ['POST', 'OPTIONS'],
'Access-Control-Request-Headers' => ['*'],
],
];
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule',
'controller' => ['user', 'ticket', 'report'],
'extraPatterns' => [
'GET search' => 'search',
'POST login' => 'login',
'POST logout' => 'logout',
'GET profile' => 'profile',
'OPTIONS login' => 'login',
],
],
],
но тем не менее всегда ошибка 403!
И собственно вопрос: в первых двух случаях в контроллер всегда приходит пустой запрос:
Yii::$app->getRequest()->getBodyParams(), Yii::$app->request->post(), и даже $_POST - всегда пустые
и как заставить работать OPTIONS (3й случай)?