当前位置: 首页 > 面试题库 >

Ajax请求未向所有人开放

漆雕唯
2023-03-14
问题内容

我已经使用CodeIgniter创建了一个webapp。我在应用程序中的几个地方都使用了ajax。

我想知道是否有一种方法可以停止对ajax控制器的直接访问和查询,并且仅允许处理源自页面的合法ajax请求。

谢谢。


问题答案:

是的,您可以毫无问题地做到这一点。CodeIgniter输入类具有一个称为is_ajax_request()的方法。只需在控制器操作开始时检查一下即可。例如:

function ajax_save() {
    if ($this->input->is_ajax_request()) {
        //continue on as per usual
    } else {
        show_error("No direct access allowed");
        //or redirect to wherever you would like
    }
}

如果您有为ajax调用完全指定的控制器,则可以将该if语句放入function __construct()控制器的构造函数中。记住要先调用parent
:: __ constructor()!

编辑:至于“从页面开始”,您可能应该对ajax请求进行身份验证+安全检查(可能通过会话进行操作,这样您就不会访问数据库了)。因此,与您的Web应用程序无关的流氓用户无论如何都不应该手动发送ajax请求。希望这能回答您的问题。



 类似资料:
  • 问题内容: 我想每次发送ajax请求时显示一个“正在加载”进度栏。是否有可能在任何时候使用jQuery发送ajax请求时收到通知? 问题答案: 您可以使用该方法来设置将应用于整个页面的全局AJAX属性:

  • 问题内容: 我需要等到我所有的ajax函数都完成后,再继续执行。 我的特殊情况是,在提交表单之前,我需要翻译表单中的某些字段。我通过ajax调用将其转换为外部站点。根据表单中的某些值,我需要进行更多或更少的翻译。完成所有翻译后(如果有),我必须使用ajax验证表单,如果表单有效,则提交。 这是我的方法: 首先,我有一个函数发送ajax调用并对接收到的数据进行处理: 然后,当要提交表单时,我将执行以

  • 我们的整个网站将通过https提供服务。我在每条路线上都有“https”。但是,如果他们试图通过http将其重定向到https,我该如何将其重定向到https?

  • 我正在编写一个mdp文件,并且我正在寻找一种方法来指定(或修改)客户端为特定演示文稿所做的所有请求的HTTP标头。我想在超文本传输协议请求中添加一个授权字段。我希望在不编辑客户端sw的情况下这样做。 我已经阅读了ISO/IEC 23009-1,但我没有发现任何关于它的信息。有人知道怎么做吗?

  • 问题内容: 我有一个问题,提交表单时所有活动的ajax请求均失败,并触发错误事件。 如何在不触发错误事件的情况下停止jQuery中所有活动的ajax请求? 问题答案: 每次创建ajax请求时,都可以使用变量来存储它: 然后,您可以中止请求: 您可以使用数组来跟踪所有未决的ajax请求,并在必要时中止它们。

  • 我已经为此挠头两天了。我使用WebAPI版本2.2和我使用CORS。这个设置工作在服务器端,我被允许从我的web客户端服务器代码获得授权的内容,但在我的ajax调用中获得未经授权的内容。 以下是我的配置: Web API配置 WebApiConfig: Startup.Auth.cs: (我已经尝试了app.UseCors(CorsOptions.AllowAll)和config.EnableCo