Django和Java小程序授权失败

Django和Java小程序授权失败,java,django,applet,session-cookies,Java,Django,Applet,Session Cookies,我正在用allauth构建一个Django应用程序 我有一个页面,需要身份验证,在那里我放了一个Java小程序。此小程序确实会获取对其他页面(同一django项目)的请求,这些页面返回Json对象 小程序使用JSObject从父网页获取CSRF标记 问题是,我想用身份验证控件设置所有页面,但我无法从小程序的父网页获取sessionidcookie,因此它无法获取(也无法发布)数据以获取(或保存)数据 也许这是一个简单的方法来获得这个,但我是一个新手,我没有发现任何东西 自由地问你是否需要什么 多

我正在用allauth构建一个Django应用程序

我有一个页面,需要身份验证,在那里我放了一个Java小程序。此小程序确实会获取对其他页面(同一django项目)的请求,这些页面返回Json对象

小程序使用JSObject从父网页获取CSRF标记

问题是,我想用身份验证控件设置所有页面,但我无法从小程序的父网页获取sessionidcookie,因此它无法获取(也无法发布)数据以获取(或保存)数据

也许这是一个简单的方法来获得这个,但我是一个新手,我没有发现任何东西

自由地问你是否需要什么

多谢各位

编辑:

我在楼下写过,我发现sessionidcookie被标记为HTTPOnly,所以现在的问题是,哪种方法是允许小程序执行POST和GET请求的最安全的方法。 例如,是否可以在页面中创建一个JS方法,该方法获取数据并将其传递给小程序? 也许我可以用同样的方式来写这篇文章

编辑:

我使用页面中的jquery调用成功地获取了数据。现在的问题是代码抛出一个InvocationTargetException。我发现了问题的所在,但我不知道如何解决它

以下是Jquery代码:

  function getFloor() {

        $.get(
              "{% url ... %}",
              function(data) {
                    var output = JSON.stringify(data);
                    document.mapGenerator.setFloor(output)
              }
        );}
这里是小程序的两个功能。 **部分是问题的根源

  public void setFloor(String input) {
    Floor[] f = Floor.parse(input);
}

  public static Floor[] parse(String input) {

    **Gson gson = new Gson();**

    Floor[] floors = gson.fromJson(input, Floor[].class);

    return floors;
}
这是我服务器上的日志,您可以看到小程序试图从服务器(而不是小程序)加载Gson库


有什么可以帮我的吗?

您可以在小程序中执行以下操作:

String cookies = JSObject.getWindow(this).eval("document.cookie").toString();

这将为您提供该页面用分号分隔的所有Cookie。

现在,为了测试Purpose,我将在自定义会话值中传递sessionid的值,但我认为这不是最简单的方法……您可以选择禁用CSRF中间件吗?您可以在适当的地方推出定制的中间件。问题不在于csrf,而在于sessionid。在每种情况下,我都决定在小程序实例化时使用会话值加载数据。在测试期间,我没有发现使用JQuery GET函数存在任何安全问题。因此,我将使用发布结果。
new Gson()
不太可能引发异常,更可能是下一行(Gson不知道如何转换到Floor[])。如果这是您指出的行,则可能是您没有在applet标记(在HTML中)中包含Gson jar文件。它不起作用。这里的问题是cookie被标记为HTTPOnly,因此从Java或Js.lol中获取它是“不可能的”。所以你想绕过你自己的安全?为什么不让小程序再次向服务器发出请求,以便它可以直接获取CSRF令牌?否则你基本上是在试图规避你自己的安全。:P不幸的是,我现在才发现这个问题。不,现在我不是想绕过我的服务器,而是想不使用csrf或sessionid解决这个问题。我在这里提出了另一个问题:因为这似乎是一个更复杂的问题。
String cookies = JSObject.getWindow(this).eval("document.cookie").toString();