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,或者对某些网址、文件夹等进行一些限制
以下函数应序列化表单数据并将其发送到服务器上进行处理。
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,或者对某些网址、文件夹等进行一些限制