405方法不允许-CodeIgniter Rest-server

时间:2018-09-20 18:29:12

标签: php http-headers codeigniter-3 codeigniter-restserver

我已经在使用Codeigniter-Rest Server麻烦了一个星期。 我有一个名为 Users 的控制器,它具有2种方法 all_users_get register_post

  1. all_users_get 工作正常。
  2. register_post

    Sub Test() Call ScanDir("C:\temp\test2\") End Sub Private Sub ScanDir(ByVal DirPath As String) Dim oCurFile As String oCurFile = Dir(DirPath) Dim oCurRow As Long oCurRow = 2 Dim oFile As String Do While oCurFile <> "" Open DirPath & oCurFile For Input As #1 oFile = Input(LOF(1), 1) Close #1 Sheet1.Cells(oCurRow, 1).Value = oCurFile Sheet1.Cells(oCurRow, 2).Value = oFile oCurFile = Dir() oCurRow = oCurRow + 1 oFile = "" Loop End Sub

如果我更改POST方法 all_users_get ,我会遇到相同的错误,只能与GET一起使用

returns { "status": false, "error": "Unknown method" }

我正在使用Xampp在本地主机中运行代码,并且在 phpinfo

上找到了

_SERVER [“ REQUEST_METHOD”] GET

我很困惑,我不知道这是否与Xampp conf或我的代码有关,请帮忙。谢谢大家

3 个答案:

答案 0 :(得分:0)

  

此功能应该对您有用:)

  public function index_post()// post data to the database
  {
    $data = [
        'first_name'        => $this->post('first_name'),
        'last_name'         => $this->post('last_name'),
        'email'             => $this->post('email')

    ];

    if( $this->users->createUser($data) > 0)
    {
        $this->response([
            'status' => true,
            'message' => 'NEW USER CREATED'
        ], REST_Controller::HTTP_CREATED); 
    }
    else{
        $this->response([
            'status' => false,
            'message' => 'FAILED TO CREATE NEW USER'
        ], REST_Controller::HTTP_BAD_REQUEST);
    }

}

答案 1 :(得分:0)

header('Access-Control-Allow-Origin: *');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    header('Access-Control-Allow-Headers: Content-Type');
    exit;
}

只需在对我有用的构造函数中的行上方复制

答案 2 :(得分:0)

终极解决方案 第 1 步 在您的构造函数中,添加以下代码

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
$method = $_SERVER['REQUEST_METHOD'];
if ($method == "OPTIONS") {
    die();
}

第 2 步: 打开你的 route.php 并定义一个 API 路由 例如

$route['api/v1/auth/login'] = 'api/v1/auth/login';

注意:路线将在步骤 3 中使用

第 3 步: 打开你的config.php,在下面添加代码

if (stripos($_SERVER["REQUEST_URI"],'/api/v1/auth/login/') === FALSE) {
    $config['csrf_protection']  = FALSE;
}else{ 
    $config['csrf_protection']  = FALSE; 
}

注意:将 /api/v1/auth/login/ 更改为您的端点