【发布时间】:2014-03-24 08:27:01
【问题描述】:
我在谷歌应用引擎应用中使用 webapp2。基本上我已经构建了一个 REST API,我试图从一个 javascript ajax 客户端连接到它。我面临的问题是如何正确实现 Access-Control-Allow-Origin 标头。我有一个可行的解决方案,但对我来说看起来很笨拙。任何人都可以提出更好的方法吗?
这是我目前的解决方案:
在我的主路由文件中:
webapp2.Route(r'/<v>/logins/simple',
handler=controllers.login_c.LoginController,
name='simple_login', handler_method='simple_login',
methods=['GET', 'POST', 'OPTIONS']),
然后在控制器中:
class LoginController(webapp2.RequestHandler):
def simple_login(self, v):
self.response.headers.add_header('Access-Control-Allow-Origin', '*')
self.response.headers.add_header('Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept')
self.response.headers.add_header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE')
self.response.headers.add_header('Content-Type', 'application/json')
if not self.request.__str__().startswith("OPTIONS"):
...more code
但是这个解决方案意味着我必须在每个控制器中复制标题。我不能有东西来捕获所有的 OPTIONS 请求吗?
【问题讨论】:
标签: javascript python ajax webapp2