Pyramid Framework不允许使用AngularJS的JSONP回调格式

时间:2015-04-23 09:16:41

标签: angularjs pyramid

金字塔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'))

https://github.com/Pylons/pyramid/issues/1644

1 个答案:

答案 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渲染器。你提供错误报告很好:)