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

Django表示在JQuery AJAX请求中is_ajax为假

穆阳炎
2023-03-14
问题内容

上下文: chrome浏览器扩展程序使用JQuery请求来自远程django应用程序的响应。Django识别出该请求是通过AJAX发出的,并以“HelloAJAX!”响应。我以这个伟大的榜样为基础进行锻炼。由于此请求是通过chrome扩展程序发出的,因此该请求是跨站点发出的,因此我@CSRF_exempt在Django视图上使用了装饰器。

问题: 我的Django视图无法将请求识别为AJAX请求,并且没有响应Hello AJAX!而是响应Hello not AJAX!

我的Django视图:
(URL /xhr_test使用以下视图)

@csrf_exempt
def check_login_extension(request):
    if request.is_ajax():
        message = "Hello AJAX!"
    else:
        message = "Hello not AJAX"
    return HttpResponse(message)

我的JQuery请求:

function xhrconnect() {
    $.get("http://localhost:8000/xhr_test", function(data) {
      document.getElementById('xhrmsg').innerHTML = (data);
    });
}

问题答案:

遍历jQuery源,它看起来像$.ajax()(因此$.get(),,$.post()等等)将自动将crossDomain选项设置为,true如果它看到您正在发出跨域请求(此处为相关代码)。并且在实际的AJAX请求中,jQuery不会设置HTTP_X_REQUESTED_WITHDjango是否需要设置is_ajax()if
的标头crossDomain(此处为相关代码)。

我认为解决此问题的最简单方法是显式设置crossDomainfalse

function xhrconnect() {
    $.ajax({
        url: "http://localhost:8000/xhr_test", 
        success: function(data) {
            document.getElementById('xhrmsg').innerHTML = (data);
        },
        crossDomain: false
    });
}

如果这不起作用,则可以尝试使用AJAX预过滤器功能手动HTTP_X_REQUESTED_WITH在请求上设置标头。



 类似资料:
  • 我正在尝试使用JQuery在Ajax中向请求添加头。 以下是代码:- 然后我使用了要求(要求是chrome火狐插件,我们可以手动添加一个标题到请求)。 手动添加标题后:- 在这两个pics请求头中,“ACCESS-CONTROL-request-HEADERS”中都有x-auth-token,但第二个pic中有“x-auth-token”头和头值,而第一个pic中没有。 所以我的问题是如何使用JQ

  • 本文向大家介绍Django中的ajax请求,包括了Django中的ajax请求的使用技巧和注意事项,需要的朋友参考一下 需求:实现ajax请求,在界面上任意地方点击,可以成功传参。 创建项目如下所示: settings.py文件的设置,这次我们除了要注册app和设置templates文件夹的路径,还要多设置一下static的路径,代码如下: 首先,先对界面做处理,设置高为100%,然后引入我们所需

  • 我正在向本地运行的Django服务器发出post请求。我正在将请求发送到http://127.0.0.1/login/。这是风景 我现在只有,这样我就不用创建视图来获取csrf令牌了。当我发送POST请求时,它工作并打印出我随请求发送的json,但它也打印出这个错误。 这让我感到困惑的原因是我没有引用任何名为“bytes”的对象或名为“get”的属性。有人知道这是怎么回事吗?

  • 我已经做了一个简单的场景登录在ASP点网络应用程序。但是我在登录时发送的请求在执行时显示为GET。第一个图像是HTTP请求的屏幕截图,第二个图像是执行时请求详细信息的屏幕截图。如何将该请求转换为POST请求?还添加了显示“对象移动到这里”消息的响应数据截图。

  • 问题内容: 我想发送一个ajax请求(通过Jquery,尽管我认为在这种情况下不相关),而不在Django中使用form元素。根据文档,我应该可以通过使用装饰器来做到这一点,但是我得到了。 我正在使用以下导入。 我没有找到有关的大量文档,因此我们将不胜感激。 顺便说一句,使用按预期方式工作。 提前致谢。 问题答案: 如果您在导入时遇到困难,它可能仅是1.4 alpha功能-我可以在树干上使用相同的

  • 本文向大家介绍Django跨域请求CSRF的方法示例,包括了Django跨域请求CSRF的方法示例的使用技巧和注意事项,需要的朋友参考一下 web跨域请求 1.为什么要有跨域限制 举个例子: 1.用户登录了自己的银行页面 http://mybank.com,http://mybank.com向用户的cookie中添加用户标识。 2.用户浏览了恶意页面 http://evil.com。执行了页面中的