在同一域上使用 jquery ajax 进行 post 调用时出现错误 403 被禁止
Error 403 Forbidden when making post call with jquery ajax call on same domain
我有一个网页(mainmenu.php),网页中有一个java脚本函数作为脚本。
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 我 post 是 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>
所有这一切都在这个周末之前发生了一些变化,现在当这个 post 调用被执行时它给了我一个错误 403 Forbidden,你没有权限访问 /db/statusHistory.php
这是错误中的警报:ajax 调用中的一部分:
我不知道是什么原因造成的,我检查了权限,我创建了一个新的 php 文件到 post 但它仍然给我同样的错误。
我在共享托管服务器上托管,使用 php、jquery/3.4.0。
我只能访问共享主机面板 "CPanel" 而不是 linux 服务器。
这是我的托管目录和权限的屏幕截图。我的 mainmenu.php 在目录 phplogin , mainmenu.php 对 statusHistory.php 进行 post 调用,它在目录 db
中
Public html 目录:
php登录目录:
数据库目录:
我应该为我的 post 工作电话做哪些不同的事情?正如我所说,它确实工作了大约一个月,然后就停止了...
如有任何帮助,我们将不胜感激。
更多屏幕截图chrome 开发者工具:
网络选项卡:
如果它之前有效,您应该检查您的 .htaccess
文件,该文件将位于您网站的根目录中。
问题是 mod_security
。我为我的域禁用了 mod_security
,我的问题已解决。我会联系我的托管公司并要求他们正确地进行设置。
不确定为什么会这样。
我有一个网页(mainmenu.php),网页中有一个java脚本函数作为脚本。
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 我 post 是 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>
所有这一切都在这个周末之前发生了一些变化,现在当这个 post 调用被执行时它给了我一个错误 403 Forbidden,你没有权限访问 /db/statusHistory.php
这是错误中的警报:ajax 调用中的一部分:
我不知道是什么原因造成的,我检查了权限,我创建了一个新的 php 文件到 post 但它仍然给我同样的错误。
我在共享托管服务器上托管,使用 php、jquery/3.4.0。 我只能访问共享主机面板 "CPanel" 而不是 linux 服务器。
这是我的托管目录和权限的屏幕截图。我的 mainmenu.php 在目录 phplogin , mainmenu.php 对 statusHistory.php 进行 post 调用,它在目录 db
中Public html 目录:
php登录目录:
数据库目录:
我应该为我的 post 工作电话做哪些不同的事情?正如我所说,它确实工作了大约一个月,然后就停止了...
如有任何帮助,我们将不胜感激。
更多屏幕截图chrome 开发者工具:
网络选项卡:
如果它之前有效,您应该检查您的 .htaccess
文件,该文件将位于您网站的根目录中。
问题是 mod_security
。我为我的域禁用了 mod_security
,我的问题已解决。我会联系我的托管公司并要求他们正确地进行设置。
不确定为什么会这样。