我在Linux上开发了我的应用程序,并且AJAX请求工作正常。我已经将应用程序拉到Windows机器上,但是AJAX请求失败,我刚收到403Forbidden错误。从网上看,我认为这是csrf令牌的问题。在Linux中,我可以csrftoken:"AjQzJy3tRZ2awslgdibkDTvQgANFQKmP"
在AJAX请求的Cookies下看到。我没有在Windows中设置任何cookie。
这是我用来获取csrf
cookie的Javascript代码。来自https://docs.djangoproject.com/en/1.8/ref/csrf/
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
这是我提交AJAX请求的地方:
function refreshInformation(){
$.ajax({
type: "POST",
url: "get_flows_info",
data: {
csrfmiddlewaretoken: getCookie('csrftoken')
}
dataType : "json",
async : true,
error : function(data){
alert('AJAX error:' + data);
},
success : function(json_data){
// do stuff...
},
});
}
这是所请求的视图:
def get_flows_info(request):
if request.is_ajax():
# do stuff...
return HttpResponse(json.dumps(ret), content_type='application/json')
有什么帮助吗?
谢谢。
这是可以做的:
请参阅CSRF_COOKIE_NAME
以获取更多信息。
ensure_csrf_cookie
装饰器添加到视图(呈现页面的视图)中。根据文档:
警告
如果您的视图未呈现包含
csrf_token
template标签的模板,则Django可能未设置CSRF令牌cookie。在将表单动态添加到页面的情况下,这很常见。为了解决这种情况下,Django提供这迫使设置cookie的视图修饰:ensure_csrf_cookie()
。
csrftoken
,请尝试发送X-CSRFToken
标头。$.ajax({
// Your options here.
headers: {'X-CSRFToken': getCookie('csrftoken')}
});
阅读跨站点请求伪造保护以获取更多信息。
问题内容: 已编辑 我有一个ajax调用(使用),它调用以下php脚本。 这持续了40秒。 如果我关闭触发调用的浏览器窗口, 即使我显式发送了一个字符串并刷新了缓冲区 ,它仍然返回false ! 请问有人在这里回答吗? 问题答案: 您将需要添加“ ignore_user_abort(true);” 在PHP脚本之上,并在从脚本中回显某些内容后调用“ ob_flush()”(有关原因,请参见 PHP
问题内容: 我正在按照以下说明使用Python绑定安装的OpenCV 2.4 。 我的问题与此类似,但我需要Windows计算机解决方案。 问题:当我尝试使用时 它工作正常,但是以下代码 始终返回False。 文件路径正确,绝对且没有空格。 我在装有Windows XP和Windows 7的两台机器上进行了尝试,结果相似。在Linux(Ubuntu)上,它对我来说很好用。 问题答案: 添加到Win
npm错误!有效得安装目标: npm错误![“0.1.0”,“0.1.1”,“0.1.2”,“0.1.3”,“0.1.4”] npm错误!在installTargetsError(C:\Program Files(x86)\nodejs\node_modules\ S:698:17) npm错误!在C:\Program Files(x86)\nodejs\node_module\npm\lib\c
问题内容: 尝试访问$ container的’.box’类时,在ajax调用内部使用(this)不起作用。 如果不清楚我要做什么,我会尝试更改动态元素的css。但是例如 根本没有调整css。如果我将其移到ajax,success部分之外,它可以工作,但是我无法获得“描述”。 问题答案: 你近了 在您使用它的上下文中,“ this”是指ajax请求,而不是发出事件的事物。要解决此问题,请在发出aja
问题内容: 我有一个JSF表单,上面有一个selectBooleanCheckbox。如果该复选框的值为true,则要在其旁边显示组合框。但是不知何故它不起作用。 这是我的代码: Bean类方法: 注意:从FireBug复制 这是POST请求: 响应: 问题答案: 实际上,实现所需功能的直接方法是根据复选框的选择重新呈现组合框。这可以通过以下方式完成: 请注意,该代码在Bean中不需要任何特殊字段
我刚刚开始学习laravel,我正在使用MAMP。我在这个url上有一个表单:http://localhost:8888/laravel-site/my new app/public/ducks但当我提交表单时,它会将我带到此url:http://localhost:8888/ducks不会停留在我期望的地方。 routes.php文件包含以下内容: 在我的生活中。htaccess文件我有这个: