2

codeigniter を使用して REST サーバーを実装しています。これには、XML を投稿してデータを取得する機能が含まれています。

XML はリクエストの本文を介して渡され、次のように取得されます。

$xml = file_get_contents('php://input');

次に、XML は次のように検証されます。

try
{
    $doc = new DOMDocument();
    $doc->preserveWhiteSpace = FALSE;
    $doc->loadXML($xml);
    if ($doc->schemaValidate(APPPATH.'views/xml/xmlvalidate.xsd')) {
        //--this is valid
    }
}

これはfirefoxのRESTclientでは問題なく動作しますが、chromeでAdvanced REST Clientを使用すると、「許可されていないキー文字」エラーが発生します.codeigniterによると、問題の文字列は次のとおりです。

<?xml version

Firefox RESTclient でのみ動作する理由を知っている人はいますか? テストがうまくいった後に使用中にエラーが発生する可能性がある場合に備えて、問題の原因を突き止める必要があります。

4

1 に答える 1

1

多くの場合、その CI エラーは外国語の文字 (POST データであっても) または php の閉じ括弧の後の改行から発生します。

CI 構成 (application/config/config.php) で許可されている文字を調整できます。

変化する:$config['permitted_uri_chars'] = 'a-z 0-9~%.:_=+-';

の中へ:$config['permitted_uri_chars'] = 'a-z 0-9~%.:_=+-<>';

または空の文字列でテストします:$config['permitted_uri_chars'] = ''; // anything goes

入力をフィルタリングせずに、CI の自然な URL からコントローラへのマッピングを使用する場合は、セキュリティの影響に注意してください。

于 2012-09-19T12:44:06.747 に答える