【问题标题】:PHP AJAX not working with htaccessPHP AJAX 不适用于 htaccess
【发布时间】:2018-08-05 02:56:28
【问题描述】:

我为 htaccess 编写了一个简单的代码来防止 .php 扩展。但从那时起,我的 ajax 代码就不起作用了。这是我的 .htaccess 代码

Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

在删除第四行时,ajax 正在工作,但是 localhost/sample/hello.php 和 localhost/sample/hello 两个 URL 都在工作! (因为那不是故意的)

我的示例 ajax 脚本

$.post('BaseClass.php', {
  action: 'login'
},

我在同一目录中有 BaseClass.php 文件 提前感谢您的帮助

【问题讨论】:

    标签: php ajax .htaccess


    【解决方案1】:

    您的带有 .php 扩展名的 htaccess 阻塞请求尝试在没有扩展名的情况下使用它

    这样

    $.post('BaseClass', {
      action: 'login'
    },
    

    【讨论】:

      【解决方案2】:

      AJAX 调用和常规页面请求之间的 HTTP 请求没有区别。唯一的区别是一个由用户完成(常规页面请求),而另一个由浏览器在后台使用 JavaScript (AJAX) 完成。

      因此,您不能使用.htaccess 规则来禁用 PHP 脚本,而是为 AJAX 调用启用它们,因为它们实际上是一回事。如果您想确保 PHP 脚本仅作为 AJAX 调用被调用,请检查特定的请求变量(例如 if (isset($_POST["ajax_action"])) { ... })。但请注意:这不是一种安全机制,因为任何人都可以阅读 JavaScript 源代码并手动发出 AJAX 请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 2017-01-23
        • 1970-01-01
        • 2015-06-17
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多