Этот вопрос может показаться очень простым для тех, кто использует Yii2 API и React Js. Я новичок в сочетании этой технологии.
У меня есть API Yii2 с поведением, настроенным, как показано здесь
public $serializer = [
'class' => 'yii\rest\Serializer',
'collectionEnvelope' => 'items',
];
public static function allowedDomains()
{
return [
'*' // star allows all domains
'http://localhost:3000',
];
}
public function behaviors()
{
return array_merge(parent::behaviors(), [
// For cross-domain AJAX request
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to domains:
'Origin'=> static::allowedDomains(),
'Access-Control-Request-Method' => ['POST','GET','PUT','OPTIONS'],
'Access-Control-Allow-Credentials' => false,
'Access-Control-Max-Age' => 3600,// Cache (seconds)
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Origin' => false,
],
],
]);
}
когда я использую запрос на выборку к этому API с помощью GET, он работает отлично и возвращает данные в мой интерфейс реагирования.
Теперь я пытаюсь реализовать регистрацию в своем приложении, где мне нужно отправлять данные из моего интерфейса с помощью POST в мой API. (Я реализовал свое действие регистрации, и оно хорошо работает с почтальоном.) Когда я пытаюсь Отправьте запрос на публикацию к этому API, я получаю ошибку (отсутствует заголовок CORS «Access-Control-Allow-Origin») на моей консоли. Ниже приведен мой запрос Reactjs, и я действительно не знаю, чего мне не хватает. Любая помощь в этом вопросе будет принята с благодарностью.
//this function is to save data to the API
saveUser = (user) => {
fetch(URL_SIGNUPUSER, {
method: 'post',
mode: "cors",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
//'Access-Control-Allow-Credentials': "*"
},
body: JSON.stringify({
name:user.name,
username:user.username,
email:user.email,
password:user.password,
})
}).then(res=>res.json())
.then(()=>{
this.setState({
user: { name:'',
username:'',
email:'',
password:'',
confirm_password:'',
},
success:true,
error:false
})
});
}
Подробнее здесь: https://stackoverflow.com/questions/524 ... s-frontend