Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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
访问Cloudflare中托管的API(而不是Python开发Shell)时遇到问题_Python_Ajax_Django_Api_Cloudflare - Fatal编程技术网

访问Cloudflare中托管的API(而不是Python开发Shell)时遇到问题

访问Cloudflare中托管的API(而不是Python开发Shell)时遇到问题,python,ajax,django,api,cloudflare,Python,Ajax,Django,Api,Cloudflare,所以我有一个网站,让我们称之为micromic.com。该网站在micromic.com/api1、micromic.com/api2下有一些API。我使用ajax向api发送一个请求,并使用Authorization:JWT作为头。我已经设置了接受JWT令牌作为API身份验证的设置。当我通过aws(python manage.py runserver 0.0.0.0:8000)使用虚拟python服务器对其进行测试时,一切都运行良好 但是,当我通过Cloudflare的DNS实时托管实际站点时

所以我有一个网站,让我们称之为micromic.com。该网站在micromic.com/api1、micromic.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请求(通过micromic.com)或使用“curl-H”授权远程访问API时:JWT”Mirror.com/api“从本地计算机的终端,我获得了401身份验证凭据。这是因为Cloudflare的安全性还是其他原因?如何绕过此问题?我注意到,当我进入live站点时,有一个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',
            })

我发现了问题。它不是cloudflare。显然,当您使用mod_wsgi部署到apache时,默认情况下授权头不会传递到wsgi应用程序。因此,我必须将“WSGIPassAuthorization On”添加到httpd.conf文件中