【问题标题】:403 Access Forbidden when directly accessing a page using base_url()使用 base_url() 直接访问页面时 403 Access Forbidden
【发布时间】:2013-10-13 22:04:46
【问题描述】:

我在尝试通过 XHR 访问页面时遇到 403 错误:

$("form").submit(function( event ) {
  xmlhttp.open("GET","<?=base_url('application/views/pages/search_sql.php'); ?>",true);
  xmlhttp.send();

  event.preventDefault();
});

我可以通过直接的xmlhttp.open("GET","search_sql",true); 加载页面search_sql.php,但它不会直接加载脚本 - 而是由控制器处理并加载在这种情况下不需要的其他视图。

【问题讨论】:

  • 尝试访问加载视图页面的控制器方法
  • 好主意,但xmlhttp.open("GET"," &lt;?php $this-&gt;load-&gt;view('pages/search_sql.php'); ?&gt; ",true); 会加载视图以及其他不需要的视图

标签: javascript php codeigniter xmlhttprequest


【解决方案1】:

您正在使用 CodeIgniter,为什么要尝试直接加载任何内容?

像往常一样调用页面并添加一个控制器方法来执行这种情况下所需的操作。所以:

假设您有一个名为“Search”的控制器,请创建一个名为“相关”的方法,让我们说“special_case”并使用它需要的任何参数调用它

<?php

class Search extends Controller {

    function index()
    {
        // I assume this is what it is currently doing
    }

    function special_case()
    {
        // Make this do whatever is required in this case.
    }

然后使用标准 CodeIgniter 控制器/方法/param1/param2 ......机制从您的 Javascript 中调用它。

【讨论】:

  • 是的,我通过创建一个新控制器scripts,将$route['scripts/(:any)'] = 'scripts/script/$1'; 添加到路由并通过xmlhttp.open("GET","scripts/search_sql",true); 加载视图来实现它。感谢您的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2015-04-01
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多