我有一个瓶子服务器(它的底层http服务器已经被多线程CherryPy替换掉),其中一个路由(POST)直接返回http响应,而不是json字典,例如:
return HTTPResponse(status=200,body=json.dumps({'body':'my body'})
现在,我已经将after_request'
钩子添加到我的瓶子应用程序中,这样它就可以在响应上设置头来处理CORS,例如,在我的after_request
钩子中,我有:
bottle.response.set_header('Access-Control-Allow-Origin', '*')
我可以确认after_request
函数运行并在bottle.response
上成功设置头。你知道吗
但是,我的route函数在after\u请求函数运行之前返回,因此我的浏览器在响应消息中仍然看不到这些头。你知道吗
但是,如果我只是修改route函数以返回一个简单的json dict,而不是HTTPResponse
,例如:
return json.dumps({'body':'my body'}
然后突然,浏览器看到由我的after\u请求钩子设置的头。即使我剩下的代码没有改变。你知道吗
有什么好处?为什么返回HTTPResponse
会使我丢失所有的头文件,而仅仅返回一个简单的json就不会了?你知道吗
尝试在要返回的新对象中设置标题,如下所示:
我的猜测是
after_request
钩子操作的是瓶子为您管理的“magic”响应对象,因此当您创建并返回一个新的对象时,它的头不会被修改。你知道吗相关问题 更多 >
编程相关推荐