jquery .serialize() 将 space 替换为 + 导致 LITESPEED 服务器在 Ajax 调用时出现 403 禁止错误

jquery .serialize() replacing space with + causing 403 Forbidden Error from LITESPEED server on Ajax call

以下函数应序列化表单数据并将其发送到服务器上进行处理。

function postIt() {
   var postData = $("#myForm").serialize();
   $.ajax({
       type: 'POST',
       data: postData,
       url: 'php/makeTopics.php',
       success: function(data) {
            /* do stuff*/
       }
   })
}

但是,我刚刚开始从服务器收到 403 Forbidden 错误。经过调查,我发现 .serialize() 函数 空格替换为“+” 并且如果我重新发送没有“+”的数据"s 我不再收到错误。

我做错了什么?这是客户端问题还是服务器问题?

更多信息:

-使用 LITESPEED 服务器,

-我已将我的 php 代码减少到 <?php echo("Hello World!"); ?>,但问题仍然存在,所以我认为它一定是网络服务器中的其他问题。此外,这是新行为 - 我没有在任何一端更改代码来触发它。

-工作数据示例:tn=factorystore&tkw1=manufacturers&tkw2=brickandmortar

-无效数据示例:tn=factory+store&tkw1=manufacturers&tkw2=brick+and+mortar

(注意:以上数据示例是从Chrome控制台获取的'source'表单数据)

当你说,

reduced my php code to and the problem persists

你是说,https://yourdomain.com/hello.php return 403?

一般情况下,您可以让您的主机查看服务器错误日志,找出403错误的原因。 403 可能由多种原因引起。比如mod_security,或者对某些网址、文件夹等进行一些限制