【问题标题】:axios patch not working in chromeaxios补丁在chrome中不起作用
【发布时间】:2017-11-03 19:28:28
【问题描述】:

我正在尝试使用 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
  • 请求方法:选项
  • 状态码:200 OK
  • 远程地址:[::1]:8888
  • 推荐人政策:降级时无推荐人
  • 响应标头
  • 查看源代码
  • 允许:GET、POST、DELETE、PATCH
  • 缓存控制:必须重新验证、无缓存、私有
  • 连接:保持活动状态
  • 内容语言:zh
  • 内容长度:0
  • 内容类型:应用程序/json
  • 日期:格林威治标准时间 2017 年 11 月 3 日星期五 21:08:24
  • 到期时间:周日,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 兼容:IE=edge
  • 请求标头
  • 查看源代码
  • 接受:/
  • 接受编码:gzip、放气、br
  • 接受语言:en,en-US;q=0.8,sv;q=0.6,fi;q=0.4
  • 访问控制请求标头:内容类型
  • 访问控制请求方法:补丁
  • 连接:保持活动状态
  • 主机:本地主机: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 编码
  • _format:json

编辑:用 Firefox 测试,它可以工作,但它不能在 Chrome 中工作!已清空缓存并重新启动并重新加载无济于事。

编辑 2:问题已解决。我在 Chrome 中安装了另一个 CORS 插件。如果有人在使用其他 CORS 插件时遇到同样的问题,可以使用以下方法:

https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc

【问题讨论】:

  • 听起来问题在于 Drupal 站点不允许 PATCH,尽管它在 Postman 中工作很奇怪。您能否在浏览器开发工具中检查 PATCH 请求之前对同一 URL 发出的 OPTIONS 请求并将响应添加到您的问题?
  • 使用 OPTIONS 请求更新问题。
  • 奇怪的是它也适用于 Firefox,但不适用于 Chrome。
  • 您是否尝试过将 Chrone 中的请求导出到 Postman 中?您可以在网络选项卡中右键单击请求并选择“复制为 cURL”,然后在 Postman 中将其导入为纯文本。
  • 我只在网络标签中看到了 OPTIONS 请求。

标签: reactjs axios


【解决方案1】:

我也经历过完全相同的事情。和你一样,只是react、axios和chrome的组合不起作用。

我通过将我的 CORS chrome 扩展更改为这个解决了这个问题: https://chrome.google.com/webstore/detail/access-control-allow-cred/hmcjjmkppmkpobeokkhgkecjlaobjldi

【讨论】:

    【解决方案2】:

    我在无服务器和 reactjs 方面有类似的经验。首先我认为问题出在无服务器 CORS 配置上,但实际上我忘了放

    e.preventDefault()
    

    提交表单时。结果,请求被取消了,因为页面已经加载,虽然响应还没有返回。

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多