Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在ajax测试后提交表单而不出现XSS错误?_Jquery_Json_Forms_Xss_Getjson - Fatal编程技术网

Jquery 如何在ajax测试后提交表单而不出现XSS错误?

Jquery 如何在ajax测试后提交表单而不出现XSS错误?,jquery,json,forms,xss,getjson,Jquery,Json,Forms,Xss,Getjson,在用户完成并尝试提交表单后,我想查询服务器以查看该用户是否经过身份验证。如果没有,我想弹出一个登录窗口,登录后该窗口将关闭,表单数据不受干扰,可以提交 问题是,如果用户已登录,我想调用form.submit(),但由于这是来自回调,因此会出现XSS错误。有更好的办法吗?以下是我尝试过的: function submitForm(form) { form.submit();} $("#myForm").submit(function () { var t

在用户完成并尝试提交表单后,我想查询服务器以查看该用户是否经过身份验证。如果没有,我想弹出一个登录窗口,登录后该窗口将关闭,表单数据不受干扰,可以提交

问题是,如果用户已登录,我想调用form.submit(),但由于这是来自回调,因此会出现XSS错误。有更好的办法吗?以下是我尝试过的:

function submitForm(form) { form.submit();}

$("#myForm").submit(function () {
                     var thisForm = this;
                     $.getJSON("/url/login_check/", function(data) {
                           if (data.loggedIn === true) { 
                               submitForm(thisForm); 
                            }
                            else {
                               // display login popup
                            }
                     });
                     return false;
  });

您将收到一个XSS错误,因为您试图向另一个域发送一个JSON请求,但您无法执行此操作


您可能需要做的是发送一个JSONP请求(假设您的身份验证服务器支持它们)。这允许您将数据发送到远程域并处理响应。

您将xss错误称为什么?我的浏览器显示此消息:检测到403禁止的跨站点请求伪造。请求中止。您使用的服务器端堆栈是什么?这听起来很可疑——您不需要显式地调用以检查登录status.django。我在服务器上进行身份验证,但是如果在用户输入表单数据并发布表单数据后会话超时,那么数据就会消失。我认为,弹出一个登录窗口,而不改变其数据的原始形式是一个更好的用户体验;简单地捕获表单内容并在用户登录后重新填充表单可能更简单。这就是我的想法。一个不吸引人的替代方法可能是对服务器进行同步查询。另外,JSONP不是只适用于GET吗?如果您正在进行身份验证,那么GET就是合适的动词。POST只有在服务器状态发生相应更改时才有意义。此外,查询是否同步也无关紧要。。。如果它与为您的代码提供服务的域不同,那么您尝试的是XSSY您的GET是正确的。我混淆了身份验证请求和表单的发布。但是表单的域和getJSON请求是相同的——getJSON函数应该只是从它所在的页面提交表单。我认为XSS错误可能是由于从弹出窗口登录,而不是由于从getJSON函数提交表单。