2012-09-15 65 views
0

我配置我的app.yaml这样的:配置应用YAML服务JSON文件从静态目录的

- url: /data 
    static_dir: templates/data 
    http_headers: 
    Content-Type: application/json 

正如在这里看到,在GAE config yaml

我做一个AJAX请求,以获得JSON; 我有一个1KB“sic.json”在那里,形成正确的(我检查......)

当我运行dev_appserver, 使用Chrome开发人员工具,我看到返回的响应类型:

Content-Type:application/octet-stream 

当我在jQuery/Javascript中检索这些结果时,该字符串不被识别为JSON; 如果迫使我先使用JSON.Parse ...

但是当我真正部署时,应用yaml配置似乎工作;它服务静态文件作为JSON所以JSON.Parse是不必要的...

我应该期待这个,该dev_appserver不会像现场部署一样服务http_headers文件?

+0

听起来像一个错误。您可以提交错误报告:http://code.google.com/p/googleappengine/issues/list?can=2&q=type=Defect&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner %20Log – dragonx

回答

0

我不确定Content-Type是其中一个标题,旨在指定在http_headers内。假设你没有任何关于模板/数据目录的任何其他暗示app.yaml的内容,以下将按预期工作:

- url: /data 
    static_dir: templates/data 
    mime_type: application/json 
+0

谢谢;没有其他参考/数据或模板/数据(但有模板/脚本,模板/样式等的参考)我尝试了您的建议;直接使用mime_type。它表现得一样;当我部署在本地(开发)时仍然提供** application/octet-stream **(不受欢迎),但在实际部署到[production]时提供** application/json **(http://slide.nxsxbrl.appspot.com /)....也许我做错了什么? –

+0

也许......我在发布答案(在Mac OS上)之前自己尝试过,只是为了确保。它像一个魅力。你可以临时将模板/数据移动到静态/数据或其他东西中,然后按原样保留'url:/ data'。看看是否有效。如果确实如此,那么可能会覆盖模板/数据设置。否则,它可能是你有另一个处理程序映射到相同的/数据网址? – alex

+0

嗨@alex,我尝试了你的建议,它工作!所以你的理论必须是正确的,也许别的东西会覆盖模板/数据设置。注意:我不知道为什么当我部署到生产时这不是真的;你认为这是值得研究的,还是你认为这可能是一个错误?另请注意:我切换回http-headers:Content-Type:application/json,并且这也起作用。但是mime_type方法更好。再次感谢! –