2017-02-05 63 views
0

因此,我有一个网站,可以称之为microphone.com。这个网站在microphone.com/api1,microphone.com/api2下有几个apis。我使用ajax向Authorization:JWT作为头部发送请求。我已将我的设置设置为接受JWT令牌作为API的身份验证。一切正常,当我用aws(python manage.py runserver 0.0.0.0:8000)测试虚拟python服务器时无法访问我在Cloudflare中托管的API,但无法访问Python Dev Shell

但是当我通过Cloudflare的DNS托管实际站点时,我得到了一个401未经授权每当我尝试访问API。 (我可以使用基于会话的登录[意味着去APIview,然后使用凭据登录以访问API]很好,但是当我尝试通过ajax请求(通过microphone.com)远程访问它或使用'curl - H“授权:JWT <令牌>”microphone.com/api“从我的本地计算机的终端上,我得到的401没有提供身份验证证书'这是因为Cloudflare的安全性还是其他原因?我怎么绕过这个?当我进入直播网站cfuid饼干。

这是我的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

我发现这个问题。这不是CloudFlare的。很显然,当你使用部署莫apache和d_wsgi,默认情况下,授权头不会传递给WSGI应用程序。所以我不得不将'WSGIPassAuthorization On'添加到我的httpd.conf文件中。