代码之家  ›  专栏  ›  技术社区  ›  rammanoj

PHP AJAX不能使用htaccess

  •  0
  • rammanoj  · 技术社区  · 6 年前

    我为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是可行的,但是两个url localhost/sample/hello.php和localhost/sample/hello都是可行的!(因为这不是有意的)

    我的ajax脚本示例

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

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

    2 回复  |  直到 6 年前
        1
  •  0
  •   Parikshit Sharma    6 年前

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

    像那样

    $.post('BaseClass', {
      action: 'login'
    },
    
        2
  •  0
  •   Aurel Bílý    6 年前

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

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