我正在尝试使用 React axios 更新 drupal 站点上的一些文章。GET 和 POST 请求有效,但我无法让 PATCH 工作。通过 Postman 发送 PATCH 请求工作正常。使用 axios 时出现以下错误:
预检响应中的 Access-Control-Allow-Methods 不允许方法 PATCH。
我究竟做错了什么?
这是我的代码:
editState(nid, value){
let node = {
"type":[{"target_id":"article","target_type":"node_type"}],
"body":[{"value": value}]
}
let config = {
headers: { 'Content-Type': 'application/json' }
}
axios.patch('http://localhost:8888/d8restapi/node/' + nid + '?_format=json',node,config)
.then((success) => {
console.log(success);
}).catch((error) => {
console.log(error);
});
}
这是我的 OPTIONS 请求标头:
- 请求地址:http://localhost:8888/d8restapi/node/16?_format=json
- 请求方式:OPTIONS
- 状态码:200 OK
- 远程地址:[::1]:8888
- 推荐人政策:降级时不推荐人
- 响应头
- 查看源代码
- 允许:获取、发布、删除、修补
- 缓存控制:必须重新验证,无缓存,私有
- 连接:Keep-Alive
- 内容语言:en
- 内容长度:0
- 内容类型:应用程序/json
- 日期:2017 年 11 月 3 日星期五 21:08:24 GMT
- 到期:星期日,1978 年 11 月 19 日 05:00:00 GMT
- 保持活动:超时=5,最大=98
- 服务器:Apache/2.2.31 (Unix) mod_wsgi/3.5 Python/2.7.12 PHP/7.0.10
- mod_ssl/2.2.31 OpenSSL/1.0.2h DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9
- Perl/v5.24.0
- X-Content-Type-Options:nosniff
- X-Content-Type-Options:nosniff
- X-Frame-Options:SAMEORIGIN
- X-Generator:Drupal 8 ( https://www.drupal.org )
- X-Powered-By:PHP/7.0.10
- X-UA-Compatible:IE=edge
- 请求头
- 查看源代码
- 接受:/
- 接受编码:gzip、deflate、br
- 接受语言:en,en-US;q=0.8,sv;q=0.6,fi;q=0.4
- 访问控制请求头:内容类型
- 访问控制请求方法:PATCH
- 连接:保持连接
- 主机:本地主机:8888
- 来源:http : //evil.com/
- 引用者:http://localhost:3000/
- 用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_12_6)
- AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
- 查询字符串参数
- 查看源代码
- 查看 URL 编码
- _格式:json
编辑:用 Firefox 测试,它可以工作,但它不能在 Chrome 中工作!清空缓存并重新启动并重新加载无济于事。
编辑2:问题已解决。我在 Chrome 中安装了另一个 CORS 插件。如果有人在使用其他 CORS 插件时遇到同样的问题,则以下方法有效:
https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc