codeigniter rest服务器POST“不允许”,但GET工作正常

时间:2015-02-27 19:59:34

标签: php codeigniter rest

我正在使用Phil Sturgeon的codeigniter-restserver,

https://github.com/chriskacerguis/codeigniter-restserver

这是我遇到的问题:

当我做PUT请求时,一切正常,但是当我做POST时,我得到了 " 500内部服务器错误"

<div id="container">
  <h1>An Error Was Encountered</h1>
  <p>The action you have requested is not allowed.</p>
</div>

我的代码如下:

function test_post()
{
    $this->response('ok', 200); // 200 being the HTTP response code
}

function test_get()
{
    $this->response('ok', 200); // 200 being the HTTP response code
}

可以在以下网址

中找到工作GET handelling

https://manage.pineconetassel.com/index.php/api/example/test/

请注意,我仅允许使用https。

我使用了hurl.it来测试POST方法,但它不起作用。

这是rest.php配置:

$config['force_https'] = TRUE;
$config['rest_default_format'] = 'json';
$config['rest_status_field_name'] = 'status';
$config['rest_message_field_name'] = 'error';
$config['enable_emulate_request'] = TRUE;
$config['rest_realm'] = 'REST API';
$config['rest_auth'] = false;
$config['auth_source'] = 'ldap';
$config['auth_library_class'] = '';
$config['auth_library_function'] = '';
$config['rest_valid_logins'] = array('admin' => '1234');
$config['rest_ip_whitelist_enabled'] = false;
$config['rest_ip_whitelist'] = '';
$config['rest_ip_blacklist_enabled'] = false;
$config['rest_ip_blacklist'] = '';
$config['rest_database_group'] = 'default';
$config['rest_keys_table'] = 'keys';
$config['rest_enable_keys'] = FALSE;
$config['rest_key_column'] = 'key';
$config['rest_key_length'] = 40;
$config['rest_key_name'] = 'X-API-KEY';
$config['rest_logs_table'] = 'logs';
$config['rest_enable_logging'] = FALSE;
$config['rest_access_table'] = 'access';
$config['rest_enable_access'] = FALSE;
$config['rest_logs_json_params'] = FALSE;
$config['rest_limits_table'] = 'limits';
$config['rest_enable_limits'] = FALSE;
$config['rest_ignore_http_accept'] = FALSE;
$config['rest_ajax_only'] = FALSE;

我做错了什么或者用错误的方法测试POST还是我需要配置一些东西?

2 个答案:

答案 0 :(得分:1)

$config['csrf_protection'] = FALSE;

中设置config/config.php

请注意,它不在config/rest.php

答案 1 :(得分:1)

接受的答案是正确的。 但是,如果您不想禁用0以用于Web表单,则需要排除REST API URI,例如,您的REST URL以$config['csrf_protection']开头,只需设置

/api/

它也在$config['csrf_exclude_uris'] = array( 'api/[a-z0-9/_-]+' ); 下。我使用正则表达式使其变得简单。