【问题标题】:jQuery $.get returns 403 from physical client sitejQuery $.get 从物理客户端站点返回 403
【发布时间】:2013-12-17 07:20:15
【问题描述】:

这是最奇怪的事情,只有从我的客户的实际位置才会发生这种情况。我正在使用 $.get jQuery 函数对单个较大表单中的三个表单部分执行服务器端验证。在每个部分之后,$.get 都会调用 PHP 验证脚本。只有在客户端物理站点,脚本才会在第三次也是最后一次验证调用中返回 403 错误 - 前两个过程正常。我还可以使用各种浏览器 IE8+、Chrome、FF、Windows、Mac 从其他位置运行整个表单,没有任何问题。

我没有固定它,但我有一种预感,这与站点内部域类似于外部域有关,除了 .local 用于本地和 .com 用于外部。我在调用 $.get 时使用了 FQDN,但仍然出现错误。

我已将问题隔离为传递给 $.get 的数组变量 - 这对我来说毫无意义,我已尝试更改变量中的所有值甚至变量名称等。

*services_explain_array* 数组是在添加到 *finish_array* 时导致问题的原因,如果忽略,一切都按预期工作。

更新

在 FF 上检查网络调试时,第三个也是最后一个 $.get 调用从未知服务器“GoAhead WebServer”返回,而不是我的实际 Web 服务器“Apache”


    //SET OTHER SERVICES REQUIREMENTS
var services_other_required;
if ($('#otherservices').prop('checked') === true) {
    services_other_required = 'required';
} else {
    services_other_required = '';
}

//CREATE ELEMENT ARRAYS
//GET ALL SERVICES INPUT ELEMENTS THAT ARE CHECKED AND ADD THEM TO AN ARRAY 
var services_checked_array = [];
$("#services_method input").each(function (index, value) {
    if ($(this).prop('checked') === true) {
        services_checked_array.push($(this).data("display"));
    }
});

//CONVERT INPUT ELEMENTS FROM ARRAY TO STRING TO BE VALIDATED
var services_val = services_checked_array.join(', ');

//CREATE ELEMENT ARRAYS
var services_array = new Array('services', services_val, 'alphnum', 'required');
var services_explain_array = new Array('servicesexp', $('#servicesexp').val(), 'alphnum', services_other_required);
var delivery_array = new Array('delivery', $('#delivery').val(), 'word', 'required');
var additional_array = new Array('additional', $('#additional').val(), 'alphnum');

//CREATE SECTION ARRAY
var finish_array = new Array(services_array, delivery_array, additional_array);

validate(finish_array, 'finish', 'summary');

function validate(validation_array, current_section, next_section){ 
$.get("order/validate.php", {'input_array' : validation_array}, 
function(data){ /** LOTS'o'Stuff HERE **/ }, 'JSON'); }

【问题讨论】:

  • 403 被禁止。检查权限。当您尝试手动调用 PHP 验证脚本时会得到什么。
  • 是的 - 我认为这不是权限问题。如果是,为什么它在 95% 的时间里都有效?为什么将这个 jQuery 数组添加到 $.get 数据导致它返回这个?我在描述中添加了更多细节,还有更多信息可能会有所帮助
  • 你如何使用$.get的数组?
  • 添加了第二个代码 sn-p - 它永远不会进入函数(数据),在制作 $.get 时会死
  • 我认为你需要JSON.stringify(validation_array)$.get数据可以是A plain object or string

标签: javascript php jquery ajax arrays


【解决方案1】:

如果您看到“GoAhead Web Server”,您可能正在与网络 WIFI 网关或交换机中的嵌入式路由器通话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2014-11-25
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多