php - 当 POST 数组*不*为空时,RESTful 服务会出错

标签 php codeigniter rest curl codeigniter-2

我正在尝试将 cURL 融入到我对 RESTful 服务的第一次真正尝试中。
(我正在使用 @Phil-Sturgeon 组合在一起的 codeigniter-restserver 库。)

该服务非常适合 GET 请求。
另一方面,POST 向我抛出一个曲线球。使用 POST 数组的尝试是成功的...所有其他尝试似乎都失败了。

代码:

/*** sandbox  ***/
...
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'http://localhost/project/api/companies');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);

// This works.
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array());

// This throws the error
//curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array('chicken'=>'licken'));

$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
var_export($buffer);
...


/*** RESTful controller ***/
...
function companies_post(){
    $this->response('It Works!', 200);
}  // end method: companies_post()
...


错误:
当我的 CURLOPT_POSTFIELDS 数组除了为空时,我得到:

An Error Was Encountered
The action you have requested is not allowed.


目标:
我的近期目标是简单地在响应中返回 POST 负载,这样我就可以证明往返有效。
不过,在这一点上,我愿意简单地向 API 发布 任何内容 而不会抛出错误:)

有人听说过这样的事吗?
我在这里缺少什么?

最佳答案

我认为 REST 应用程序的配置文件中的 CSRF 保护设置为 TRUE。您需要将 CSRF token 名称和 CSRF 哈希作为其值传递到您的 curl POST 请求数组中,或者通过将其值更改为 FALSE

来将其关闭
$config['csrf_protection'] = FALSE;

关于php - 当 POST 数组*不*为空时,RESTful 服务会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389249/

相关文章:

php - Laravel S3 图片上传会自动创建一个文件名的文件夹

php - 从十六进制获取 PHP 中的最低有效位

php - Codeigniter:连接 3 个表并在 View 中显示数据

javascript - 使用 codeigniter 中的值从表单打印数据的功能

带有 tomcat 和 eclipse 的 Java RESTful Web 服务给出 404

php - 需要通过php文件更改mysqli_query输出格式

javascript - 在 DOM 加载后更改 PHP 变量,更改会反射(reflect)出来吗?

php - 从URL Codeigniter获得值(value)

python - 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

rest - 无法以编程方式使用嵌入式码头配置 Swagger