【问题标题】:Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH
【发布时间】:2018-11-05 13:11:58
【问题描述】:

我在 ReactJS 中使用 axios PATCH 方法来更新记录,但由于以下错误而失败

无法加载http://192.168.99.100:8080/adslots/883:预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH。

这是我的行动:

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));
      })
  }
}

我完全糊涂了。

【问题讨论】:

    标签: javascript reactjs redux react-redux axios


    【解决方案1】:

    您调用的 api 必须允许 PATCH 请求。他们可以通过将 Access-Control-Allow-Methods 标头设置为也包含 Patch 来做到这一点。查看如何使用您的 api 使用的任何服务器端语言来执行此操作。您也可以尝试将您的呼叫切换为 POST 请求,但这更像是一个临时修复。

    【讨论】:

    • 我有这个,但它对我不起作用,也找不到任何可以解决我问题的东西......我正在打开一个新问题,因为这个问题似乎已被放弃
    【解决方案2】:

    我认为这是与您后端的 CORS 设置有关的问题。您必须在 CORS 设置中允许 PATCH 请求。您使用的是哪种后端服务器?

    【讨论】:

      【解决方案3】:

      试试这个解决方案:

      1. 转到定义了所有中间件的 app.js 文件。

      2. 打开终端并输入命令“npm install cors”,然后回车。

      3. 现在在您的文件中编写以下代码:

        const cors = require("cors");
        
        const app = express();
        
        app.use(cors());
        

      希望它会成功!

      【讨论】:

      • 它对我有用,
      【解决方案4】:

      您可以使用任何 cors 扩展程序/插件使其在浏览器中运行。 另外,请确保您已配置扩展设置,有时 PATCH 请求未列在扩展设置中

      乐于助人!

      【讨论】:

        猜你喜欢
        • 2019-11-16
        • 2017-06-09
        • 2017-01-11
        • 2016-05-25
        • 2016-03-11
        • 2019-04-28
        • 1970-01-01
        • 2017-07-02
        • 2019-04-10
        相关资源
        最近更新 更多