【问题标题】:Having trouble accessing my API hosted in Cloudflare but not Python Dev Shell无法访问托管在 Cloudflare 中但不是 Python Dev Shell 的 API
【发布时间】:2017-02-05 19:20:33
【问题描述】:

所以我有一个网站,我们称之为mic.com。该网站在mic.com/api1、micic.com/api2下有一些api。我正在使用 ajax 向 API 发送请求,其中 Authorization: JWT 作为标头。我已将设置设置为接受 JWT 令牌作为 API 的身份验证。当我通过我的 aws (python manage.py runserver 0.0.0.0:8000) 使用虚拟 python 服务器对其进行测试时,一切正常

但是当我通过 Cloudflare 的 DNS 实时托管实际站点时,每当我尝试访问 API 时都会收到 401 未授权。 (我可以使用基于会话的登录[意味着转到 APIview,然后使用凭据登录以访问 API] 很好,但是当我尝试通过 ajax 请求(通过mic.com)远程访问它或使用'curl - H “Authorization: JWT ”mic.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',
            })

【问题讨论】:

    标签: python ajax django api cloudflare


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多