Метод PATCH не разрешен Access-Control-Allow-Methods в предварительном ответе - PullRequest
0 голосов
/ 26 мая 2018

Я использую метод axios PATCH в ReactJS для обновления записи, но ее получение не удалось со следующей ошибкой

Не удалось загрузить http://192.168.99.100:8080/adslots/883: Метод PATCH не разрешен Access-Control-Разрешить-методы в ответе перед полетом.

Вот мое действие:

export const UPDATE_AD_SLOTS_REQUEST = 'UPDATE_AD_SLOTS_REQUEST';
export const UPDATE_AD_SLOTS_SUCCESS = 'UPDATE_AD_SLOTS_SUCCESS';
export const UPDATE_AD_SLOTS_ERROR = 'UPDATE_AD_SLOTS_ERROR';


export function updateAdslotsRequest(){
  return {
    type: UPDATE_AD_SLOTS_REQUEST
  }
}

export function updateAdslotsSuccess(data){
  return {
    type: UPDATE_AD_SLOTS_SUCCESS,
    data: data
  }
}

export function updateAdslotsError(errors){
  return {
    type: UPDATE_AD_SLOTS_ERROR,
    erros: errors
  }
}

export function updateAdslots(data, id) {
  return dispatch => {
    dispatch(updateAdslotsRequest());
    return axios.patch(`http://192.168.99.100:8080/adslots/${id}`, data)
      .then(res => {
        dispatch(updateAdslotsSuccess(res.data));      
      })
      .catch(errors => {
        dispatch(updateAdslotsError(errors));
      })
  }
}

Я в полном замешательстве.

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

API, которому вы звоните, должен разрешать запросы PATCH.Они могут сделать это, установив заголовок Access-Control-Allow-Methods, чтобы в нем также был Patch.Посмотрите, как это сделать с любым языком на стороне сервера, который использует ваш API.Вы также можете попробовать переключить ваш вызов на POST-запрос, но это скорее временное исправление.

0 голосов
/ 26 мая 2018

Я думаю, что это проблема, связанная с настройками CORS на вашем бэкэнде.Вы должны разрешить запросы PATCH в настройках CORS.Какой бэкэнд-сервер вы используете?

...