金字塔Web框架不允许使用AngularJS JSONP回调,因为更新的版本(在1.5.3中工作,在1.5.6中失败)抛出了错误' 400无效的JSONP回调函数名称。'当与AngularJS(V1.2.28)一起使用时,它会像这样传递回调:ptth:// example /?callback = angular.callbacks._0
什么是解决方法?
似乎没有好的方法可以在AngularJS(不允许更改回调结构)或Pyramid端修复此问题。
https://pyramid.readthedocs.org/en/master/_modules/pyramid/renderers.html JSONP_VALID_CALLBACK = re.compile(r" ^ [a-zA-Z _ $] [0-9a-zA-Z _ $] + $")
from pyramid.renderers import JSONP
config.add_renderer('jsonp',JSONP(param_name='callback'))
答案 0 :(得分:0)
看起来Pyramid中的正则表达式不允许回调名称中的点(。):
JSONP_VALID_CALLBACK = re.compile(r"^[a-zA-Z_$][0-9a-zA-Z_$]+$")
对此的解决方法是子类pyramid.renderers.JSONP
,覆盖其__call__
方法并使其使用更正的正则表达式。然后,您可以使用pyramid.config.Configurator.add_renderer
注册自定义渲染器,并使用它而不是Pyramid的内置渲染器。
当问题在Pyramid中修复时,您只需删除子类并使用库存Pyramid渲染器。你提供错误报告很好:)