预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH
Posted
技术标签:
【中文标题】预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH【英文标题】:Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response 【发布时间】:2018-11-05 13:11:58 【问题描述】:我在 ReactJS 中使用 axios PATCH 方法来更新记录,但由于以下错误而失败
无法加载http://192.168.99.100:8080/adslots/883:。
这是我的行动:
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));
)
我完全糊涂了。
【问题讨论】:
【参考方案1】:您调用的 api 必须允许 PATCH 请求。他们可以通过将 Access-Control-Allow-Methods 标头设置为也包含 Patch 来做到这一点。查看如何使用您的 api 使用的任何服务器端语言来执行此操作。您也可以尝试将您的呼叫切换为 POST 请求,但这更像是一个临时修复。
【讨论】:
我有这个,但它对我不起作用,也找不到任何可以解决我问题的东西......我正在打开一个新问题,因为这个问题似乎已被放弃【参考方案2】:我认为这是与您后端的 CORS 设置有关的问题。您必须在 CORS 设置中允许 PATCH 请求。您使用的是哪种后端服务器?
【讨论】:
【参考方案3】:试试这个解决方案:
转到定义了所有中间件的 app.js 文件。
打开终端并输入命令“npm install cors”,然后回车。
现在在您的文件中编写以下代码:
const cors = require("cors");
const app = express();
app.use(cors());
希望它会成功!
【讨论】:
它对我有用,【参考方案4】:您可以使用任何 cors 扩展程序/插件使其在浏览器中运行。 另外,请确保您已配置扩展设置,有时 PATCH 请求未列在扩展设置中
乐于助人!
【讨论】:
以上是关于预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH的主要内容,如果未能解决你的问题,请参考以下文章
预检响应没有 HTTP ok 状态。 Angular 6 中的 403
OAuth 中的 CORS:对预检请求的响应未通过访问控制检查
预检响应中的 Access-Control-Allow-Headers 不允许授权
预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段内容类型