我有一个网页(mainmenu.php),其中有一个javascript函数作为网页中的脚本。 Java脚本函数名称是:
statusHistoryUpdate(status)
此函数对与我的网页位于同一域的 php 文件执行 ajax post 调用。这是功能代码:
function statusHistoryUpdate(status)
{
var data = {
reg_no: selectedRegNo,
status: status,
progress_id : selectedProgress
};
data = $(this).serialize() + "&" + $.param(data);
//alert(data);
$.ajax({
type: "POST",
dataType: "json",
url: "../db/statusHistory.php", //Relative or absolute path to response.php file
data: data,
beforeSend: function(){
$('#loading').toggle();
//$("#submitbutton").html( "<button id='buttonsubmit' class='btn btn-primary btn-lg btn-block' type='submit' value='Register' disabled> <span class='spinner-border spinner-border-md'></span>Loading..</button>");
},
success: function(data) {
getData();
},
complete: function(){
//$('.ajax-loader').css("visibility", "hidden");
$('#loading').toggle();
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
}
您会看到我发布的网址是
url: "../db/statusHistory.php"
使用 mainmenu.php 中的按钮调用此函数。
<button id="'.$progress_id.'" type="button" class="btn btn-primary btn-sm btn-block" onclick="updateStatus('.$progress_id.',\''.$status.'\',\''.$reg_num.'\')">Update Status</button>
所有这些工作直到这个周末发生了变化,现在当执行此帖子调用时,它给我一个错误403 Forbidden,你没有访问/db/statusHistory.php的权限
这是错误中的警报:ajax 调用中的部分:
我不知道是什么原因造成的,我检查了权限,我创建了一个新的 php 文件来发布,但它仍然给我同样的错误。
我托管在共享托管服务器上,使用 php、jquery/3.4.0。 我只能访问共享主机面板“CPanel”,不能访问 Linux 服务器。
这是我的托管目录和权限的屏幕截图。我的 mainmenu.php 位于目录 phplogin 中,mainmenu.php 对 statusHistory.php 进行后调用,它位于目录 db
中我应该采取哪些不同的措施来完成电话后的工作?正如我所说,它确实工作了大约一个月,然后就停止了......
如有任何帮助,我们将不胜感激。
更多chrome开发者工具截图:
问题是
mod_security
。我为我的域禁用了 mod_security
,我的问题得到了解决。我将联系我的托管公司并要求他们正确进行设置。
不知道为什么它刚刚开始发生。
如果它之前工作正常,您应该检查您的
.htaccess
文件,该文件位于您网站的根目录中。
如果您的客户端/用户安装了 Google 翻译扩展,并且您正在发送(通过 ajax)用户输入的数据(特别是来自 TinyMCE 或等),则 Google 翻译扩展可能已将这两行附加到末尾您的用户输入的数据:
<p> </p>
<div id="gtx-trans" style="position: absolute; left: -28px; top: -8px;"> </div>
当我从发送到(PHP)后端的 TinyMCE 数据中删除这些行后,问题就解决了。
也许这个发现会帮助其他人。
看来通过 jQuery AJAX 发送的字符串
是有问题的。即使删除了谷歌翻译附加文本后,我仍然遇到了更多麻烦。
事实证明,从有效负载中删除字符串
:.replaceAll("<p> </p>", "<p> </p>")
)