PHP 的 XmlHttpRequest 将换行符 (0x0a) 更改为文字“\n”

发布于 2025-01-07 11:05:03 字数 619 浏览 0 评论 0原文

我对此完全感到困惑:

  • 在 JavaScript 中创建一个带有几个换行符(“\n”)的字符串
  • 它通过encodeURIComponent传递并通过 XmlHttpRequest 发送到 Apache/PHP
  • 在 PHP 端它以文字 '\n' 的形式到达,不是换行符。

我检查过的内容:

  • 字符串内的换行符是正确的,alert(string) 正确中断。
  • 编码后,换行符会正确替换为 %0a。
  • 尝试了 GET 和 POST(在 POST 正文中使用变量)。
  • 尝试不使用encodeURIComponent(),效果相同。
  • 尝试过 \r 和 \r\n - 它们也按字面意思到达。
  • 实际上在 PHP 端计算了“\n”和“\n”,以确保它不是“其中之一”问题。毫无疑问,$_REQUEST 包含一个文字 \n。

可能无关紧要的事情,但以防万一:

  • 这一切都发生在 window.onerror() 处理程序内
  • 魔术引号和朋友都关闭了

我一遍又一遍地查看代码并用谷歌搜索了几个小时。我什么也没得到。 :( 有人吗?布勒?

I'm completely baffled by this:

  • A string is created in JavaScript with several newlines ("\n")
  • It is passed through encodeURIComponent and send to Apache/PHP via XmlHttpRequest
  • On the PHP end it arrives as a literal '\n', not a newline.

What I have checked:

  • The newlines are correct inside the string, alert(string) breaks correctly.
  • After it is encoded, newlines are correctly replaced with %0a.
  • Tried both GET and POST (with the variable in the POST body).
  • Tried without encodeURIComponent(), same effect.
  • Tried \r and \r\n - they also arrive literally.
  • Actually counted "\n" and '\n' on the PHP end to make sure it's not "one of those" problems. No doubt, $_REQUEST contains a literal \n.

Things which might be irrelevant, but just in case:

  • This all happens inside a window.onerror() handler
  • Magic quotes and friends are off

I've looked through the code over and over again and have googled for hours. I got nothing. :( Anyone? Bueller?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文