无法访问我在Cloudflare托管的API而不访问Python Dev Shell

时间:2017-02-05 19:20:33

标签: python ajax django api cloudflare

所以我有一个网站,我们称之为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',
            })

1 个答案:

答案 0 :(得分:0)

我发现了问题。这不是cloudflare。显然,当您使用mod_wsgi部署到apache时,默认情况下,授权标头不会传递给WSGI应用程序。所以我不得不在我的httpd.conf文件中添加'WSGIPassAuthorization On'。