3

私はRESTfulサービスでの最初の実際の試みにcURLを入れようとしています。
(私は@ 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

エラーが発生
しました要求されたアクションは許可されていません。


目標:
私の当面の目標は、ラウンドトリップが機能していることを証明できるように、応答でPOSTペイロードを返すことです。
ただし、この時点では、エラーをスローせずに、実質的なものをAPIにPOSTできるようにすることで解決します:)

誰かがそのようなことを聞​​いたことがありますか?
ここで何が欠けていますか?

4

3 に答える 3

2

TRUECSRF保護はRESTアプリケーションの設定ファイルで設定されていると思います。CSRFトークン名とCSRFハッシュをcurlPOSTリクエスト配列の値として渡すか、値を次のように変更してオフにする必要があります。FALSE

$config['csrf_protection'] = FALSE;
于 2013-01-18T05:35:50.497 に答える
0

CSRFは雌犬です。消して:

$config['csrf_protection'] = FALSE; 

それ以降のバージョンでは、クライアントがその 1 つになるホワイトリスト IP/ドメインを追加できます。

于 2013-01-18T13:34:11.343 に答える