热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CakePHP3API的POST请求不起作用

如何解决《CakePHP3API的POST请求不起作用》经验,为你挑选了1个好方法。

我正在使用CakePHP 3.x文档开发API。为了开发此API,我使用了他们的官方文档:https : //book.cakephp.org/3.0/en/development/rest.html

当我尝试使用url http://localhost/healthcare_portal/eapi/applicants/index.json上的GET请求访问我的api时,我得到了预期的json结果

{
    "applicants": [
        {
            "applicant_id": 1,
            "name": "Manender"
        },
        {
            "applicant_id": 2,
            "name": "mayank"
        }
    ]
}

但是,当我在同一URL http://localhost/healthcare_portal/eapi/applicants/index.json上使用POST请求访问我的api时,出现CSRF不匹配令牌错误。在这种情况下,来自API的响应为

{
    "message": "Missing CSRF token COOKIE",
    "url": "/applicants/index.json",
    "code": 403,
    "file": "/opt/lampp/htdocs/healthcare_portal/eapi/vendor/cakephp/cakephp/src/Http/Middleware/CsrfProtectionMiddleware.php",
    "line": 191
}

我尝试了其他替代方法

 $input = (array) $this->request->input('json_decode', true);

在控制器的操作中,但这是我在发布请求时收到相同的错误。如果有人遇到同样的问题,请帮助我取得突破。



1> ndm..:

3.6版本中发布请求CSRF令牌不匹配中所述,默认应用模板最近默认情况下启用了CSRF保护中间件,要求CSRF令牌和COOKIE与非GET请求一起发送。

您的API最有可能需要某种形式的身份验证,并且如果身份验证不依赖COOKIE或(HTTP)基本身份验证,或者浏览器/客户端将自动通过HTTP请求发送/执行的任何其他形式的身份验证,那么您不需要CSRF保护,因为CSRF是不可能的。

如果你没有需要CSRF保护

如果您的API确实不需要CSRF保护,则可以禁用它,例如,通过使用自定义中间件处理程序来检查请求URL或路由,并有条件地应用CSRF中间件,或者通过在路由范围内应用中间件,因此您可以排除API范围,请参阅Cakephp 3.5.6为控制器禁用CSRF中间件

如果您确实需要CSRF保护

如果您的API使用的身份验证形式容易出现CSRF,那么您应该找出一种方法来提供COOKIE(中间件会根据GET请求自动设置COOKIE )和CSRF令牌(它们在请求对象上都可以使用$request->getParam('_csrfToken'))提供给您的客户,以便他们可以与他们的请求一起发送。

也可以看看

食谱>中间件>跨站点请求伪造(CSRF)中间件

https://security.stackexchange.com/questions/166724/should-i-use-csrf-protection-on-rest-api-endpoints


推荐阅读
  • CSRF校验策略及装饰器和auth认证模块
    目录csrf跨站请求伪造csrf校验策略csrf相关装饰器auth认证模块auth认证相关模块及操作扩展auth_user表csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 第一种<script>$(".eq").on(&qu ... [详细]
  • 前端跨域访问后端数据的方法
    参考链接:https:mp.weixin.qq.coms4G_27oRLSMMYBFvtYZgqcg一、什么是跨域当两个域名的协议、子域名、主域名、端口号中有任意一个不 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 解决文件名过长下载失败问题的jQuery方案
    本文介绍了使用jQuery解决文件名过长导致下载失败的问题。原方案中存在文件名部分丢失的问题,通过动态生成隐藏域表单并提交的方式来解决。详细的解决方案和代码示例在文章中给出。 ... [详细]
author-avatar
Rain雨露Dew
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有