2014-12-26 4 views
0
js code: 
    $.ajax({ 
     type  : "GET", 
     async  : true, 
     url  : url, 
     contentType: "text/html", 
     dataType : "json", 
     beforeSend : function(request) { 
      request.setRequestHeader("X-Test-Token", "abc"); 
     }, 
     ... 
    }); 

, когда я получаю заголовки запроса с cherrypy.request.headers,
я не могу видеть «X-Test-токен» в нем.
Как я могу получить пользовательский заголовок в cherrypy?CherryPy получить заголовок пользовательского запроса не удалось

ответ

0

Вы полностью уверены, что JS работает правильно?

Этот код питона:

from pprint import pformat 
import cherrypy as cp 

class Root: 

    @cp.expose 
    def default(self): 
     return pformat(cp.request.headers) 

cp.quickstart(Root()) 

С помощью этой команды завитка:

curl -H "X-Test-Token: abc" http://localhost:8080 

ли работа.

+0

dosen't работа ... Я установил: cherrypy.tools.auth = cherrypy.Tool ('before_handler', check_auth), и печати cp.request.headers в методе "check_auth", не может видеть заголовок. – lovecat

+0

Можете ли вы объяснить немного больше об этом инструменте? Вы разрешаете инструмент? 'Cherrypy.tools.auth.on'? – cyraxjoe

0

Это похоже на проблему с кодом jQuery. Я использовал JSFiddle для отправки запросов JS в RequestBin, и кажется, что заголовок не был отправлен, как ожидалось.

The RequestBin здесь: http://requestb.in/s5edg2s5?inspect

Вы, возможно, придется использовать новый RequestBin, чтобы проверить, что код, так как они истекают. В любом случае ящик показал мне, что заголовок X-Test-Token не отправляется, скорее он был отправлен как содержимое заголовка Access-Control-Request-Headers, а не как фактический заголовок. Попробуйте сами, и вы увидите.

Правильный способ установки пользовательских заголовков описан в this SO post. Я не думаю, что вы правильно используете обратный вызов beforeSend.

Смежные вопросы