我正在使用接收函数将 HTML 字符串发布到 Apache 服务器,只需将字符串写入数据库。它没有什么大的或聪明的,它适用于所有其他实现。
我在 POST 之前对字符串进行编码,并且服务器正在返回 301 重定向并转移到域的非 www 版本上的 GET 请求。除了标准的 Wordpress 配置之外,htaccess 中没有任何内容。无论如何,这只是一个文本字符串。我还用简单的 exit() 替换了服务器上的函数,以将其从等式中删除。
我使用相同的机制通过相同的目标函数将大量其他数据发布到该服务器而没有问题。
我发现问题是将字符 >< 一起发送 - 因为它发送 HTML,所以这些发生了很多。
所以我通过以下方式发送: encodeURIComponent("<span class='teststring'><span>")
其中 POSTS.. action=updatemenu&mstring=%3Cspan%20class%3D'teststring'%3E%3Cspan%3E
并返回.. POST http://www.DOMAINREMOVED.co.uk/twdc/CMS/TellMe.php 301 永久移动 301ms,然后.. GET http://DOMAINREMOVED.co.uk/twdc/CMS/TellMe.php 301 永久移动 108ms
如果我从 >< 模式中删除 > 或 < 它工作正常!将上面的 encodedURI 字符串减少为 >< 会导致相同的错误。
我完全不知所措。有人遇到过这个或有任何想法吗?我想最终我可以用安全的东西替换有问题的字符串,但这会产生影响,因为所有用户输入都必须进行编码/解码以防万一。当然这不应该是必要的吗?
我只是尝试在 encodeURIComponent 结果上使用replace(/%3E%3C/g,"~~")将 POST 字符串中的所有 >< 切换出去,并将其传递给服务器而没有重定向/错误。
编辑 00:00 7 月 19 日..
我注意到 POST 中的 ><,这是响应标头。如果没有违规字符,x-pingback 不会出现在响应标头中。
Cache-Control no-cache, must-revalidate, max-age=0 连接保活 内容长度 0 内容类型文本/html;字符集=UTF-8 日期 2013 年 7 月 18 日星期四 22:57:07 GMT 到期时间 1984 年 1 月 11 日星期三 05:00:00 GMT 保活超时=5,最大值=100 位置 http://*domain*.co.uk/twdc/CMS/TellMe.php 杂注无缓存 服务器阿帕奇 X-Pingback http://*domain*.co.uk/xmlrpc.php X-Powered-By PHP/5.3.17
我想这是与 WordPress 相关的。任何人都可以对此有所了解吗?
需要明确的是,当前站点是基于 Wordpress 的;替换不是,但它们在新的构建过程中共存。