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 回答