0

我正在进行 ajax 调用以将字符串发布到我从 Namecheap.com 租用的共享托管服务器。我似乎无法发布包含一些零散的 HTML 标记(例如<b><b, <tag><tag<tag. 当我这样做时,我得到一个 403 Forbidden 错误。我使用Underscore.js的转义函数尝试了同样的事情,但结果是一样的。

这是我正在使用的代码。

JavaScript

$.ajax({
    type: 'POST',
    url: '/test.php',
    data : {
        pass : '<b><b' // pass : _.escape('<b><b') gives the same result
    }
})
.done(function (res) {
    console.debug(res);
})
.fail(function (err,textStatus,errorThrown) {
    console.debug('failed');
});

PHP

<?php

$password = $_POST['pass'];
echo $password;

?>

我在本地机器上的 XAMPP Linux 上对此进行了测试,但没有发生。为什么会这样?

4

2 回答 2

1

您几乎可以肯定会遇到您的虚拟主机的某种考虑不周的“安全”功能。联系他们的支持人员。

于 2013-06-05T23:01:26.230 回答
0

对于任何有同样问题的人,我通过双重转义文本(_.escape(_.escape('<b><b')). 这将输出&amp;lt;b&amp;gt;&amp;lt;b.

Sam Deufel 还建议我使用 base64 编码。我认为这也会奏效。

编辑:我发现 JavaScript 语句,如alert()ordocument.write()也不允许通过 ajax 在 Namecheap 托管服务器上发布。因此,双重转义并不总是有效。使用 base64 或类似方法可能会更好。

于 2013-06-06T00:04:08.120 回答