【问题标题】:Access forbidden (403) if access file via JavaScript如果通过 JavaScript 访问文件,则访问被禁止 (403)
【发布时间】:2013-11-28 15:32:57
【问题描述】:

在索引页面上,我创建了一个表单(不是在 HTML 中,而是通过 JavaScript)并将它包含在一个函数中,该函数在某些条件下调用。下面是 JavaScript 代码:

    function next_page()
{
var card="Some values ab,xy";
var form = document.createElement("form");
    input = document.createElement("input");

form.action = "preview_card.php";
form.method = "post"

input.name = "card_data";
input.value = card;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}

但问题是,当函数被调用时“Forbidden”消息显示为:

禁止

您无权访问此服务器上的 /preview_card.php。

此外,在尝试访问时遇到 404 Not Found 错误 使用 ErrorDocument 来处理请求。

但是如果我直接转到preview_card.php,页面就会显示出来。

为什么JS文件调用文件时禁止访问,但是直接在浏览器中输入链接就显示出来了。

【问题讨论】:

  • 确保preview_card.php 与您的索引文件位于同一目录中。
  • 同目录
  • 在这种情况下检查您的error_log 以了解更多错误详情。

标签: javascript php apache


【解决方案1】:

似乎您的服务器拒绝了 ajax (X-Requested-With) 请求。尝试在服务器端设置 Access-Control-Allow-Headers: X-Requested-With, Content-Type 标头。

顺便说一句 - 为什么你不使用 jQuery?

$.post(
    '/preview_card.php',
    {
        card_data: "Some values ab, xy"
    },
    function (data) {
        console.log(data);
        /* some actions with response here */
    }
);

【讨论】:

    【解决方案2】:

    也许preview_card.php 目前不接受POST 请求。通常情况下,如果您在地址栏输入 url,您的浏览器会执行 GET 请求。尝试将您的form.method 更改为"get"

    【讨论】:

    • 但是代码在本地服务器上工作,如果我把它放在远程服务器上我会遇到问题,但无论如何,我也会尝试 GET 方法
    • 我也尝试过使用 GET,但它给了我同样的错误,似乎它不是关于变量传递,而是更多关于一些 .htaccess 配置文件
    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-06-02
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多