所以我有一个网站,我们称之为microphone.com。这个网站在microphone.com/api1下面有几个api,麦克风/ api2。我正在使用ajax向API发送请求,并使用Authorization:JWT作为标头。我已将我的设置设置为接受JWT令牌作为API的身份验证。当我通过我的aws(python manage.py runserver 0.0.0.0:8000)使用虚拟python服务器测试它时,一切都运行良好
但是当我通过Cloudflare的DNS托管实际网站时,每当我尝试访问API时,我都会获得401未授权。 (我可以使用基于会话的登录[意思是访问APIview然后使用凭据登录来访问API],但当我尝试通过ajax请求(通过microphone.com)或使用'curl - 远程访问它时H“授权:JWT< token>”来自我本地计算机终端的microphone.com/api',我没有提供401认证凭证'。这是因为Cloudflare的安全性还是什么?我该如何绕过这个?当我进入现场网站时,注意到有一个cfuid cookie。
这是我的ajax请求设置
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});
$.ajax({
beforeSend: function(request)
{
request.setRequestHeader("Authorization", " JWT "+jwtToken);
},
url: "/api1/",
dataType: 'json',
method: 'GET',
})
答案 0 :(得分:0)
我发现了问题。这不是cloudflare。显然,当您使用mod_wsgi部署到apache时,默认情况下,授权标头不会传递给WSGI应用程序。所以我不得不在我的httpd.conf文件中添加'WSGIPassAuthorization On'。