reactjs - axios 补丁在 chrome 中不起作用

标签 reactjs axios

我正在尝试使用 React axios 更新 drupal 网站上的一些文章。 GET 和 POST 请求有效,但我无法让 PATCH 工作。通过 Postman 发送 PATCH 请求效果很好。我使用 axios 收到以下错误:

Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.

我做错了什么?

这是我的代码:

  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 请求 header :

  • 请求网址:http://localhost:8888/d8restapi/node/16?_format=json
  • 请求方法:选项
  • 状态代码:200 正常
  • 远程地址:[::1]:8888
  • 推荐人政策:降级时无推荐人
  • 响应 header
  • 查看源码
  • 允许:获取、发布、删除、修补
  • 缓存控制:必须重新验证、无缓存、私有(private)
  • 连接:保持事件状态
  • 内容语言:en
  • 内容长度:0
  • 内容类型:application/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 框架选项:SAMEORIGIN
  • X 生成器:Drupal 8 ( https://www.drupal.org )
  • X-Powered-By:PHP/7.0.10
  • X-UA 兼容:IE=edge
  • 请求 header
  • 查看源码
  • 接受:/
  • 接受编码:gzip、deflate、br
  • 接受语言:en,en-US;q=0.8,sv;q=0.6,fi;q=0.4
  • 访问控制请求 header :内容类型
  • 访问控制请求方法:PATCH
  • 连接:保持事件状态
  • 主机:本地主机:8888
  • 来源:http://evil.com/
  • 推荐人:http://localhost:3000/
  • 用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_12_6)
  • AppleWebKit/537.36(KHTML,如 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

最佳答案

我也经历过同样的事情。和你一样,仅仅react、axios和chrome的组合是行不通的。

我通过将 CORS chrome 扩展更改为以下内容解决了该问题: https://chrome.google.com/webstore/detail/access-control-allow-cred/hmcjjmkppmkpobeokkhgkecjlaobjldi

关于reactjs - axios 补丁在 chrome 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103184/

相关文章:

javascript - 样式不适用于 react 组件

reactjs - 您尝试 import/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2 ,它位于项目 src/dir 之外

javascript - componentDidMount 获取 DOM 节点出错

javascript - 单击按钮时不会重置作为计数器运行的时间间隔

reactjs - Effect Hook中如何使用axios?

javascript - React Native 允许使用 axios 自签名证书

javascript - React .map() 不是函数错误

node.js - 如何使 multer 正确解析使用表单数据发送的客户端请求?

javascript - 如何在 React JS 中的另一个 axios get 中使用 axios 响应?

reactjs - React + Redux 应用程序 : Calling API through a Redux action Vs Calling an API directly