amp-list index.js:59 Uncaught (in promise) 错误:获取 JSON 数据失败:HTTP 错误 406

问题描述

amp-list 元素中,当我使用 json 文件加载数据时,例如:

src="amp-listing.json"效果很好。

但是当我使用从 PHP 脚本生成的 json 时,例如:src="amp-listing.PHP"我有错误

未捕获(承诺)错误获取 JSON 数据失败:HTTP 错误 406

at ya (index.js:59)
at yb.g.createError (log.js:344)
at xhr-utils.js:384
at new Promise (<anonymous>)
at qg (xhr-utils.js:378)
at xhr-impl.js:184

我发现问题是AMP添加到json请求中,参数__amp_source_origin=https%3A%2F%2Fwww.yourdomain.com

Apache mod_security 模块不喜欢 %2F 给出错误

不可接受! 在此服务器上找不到所请求资源的适当表示。此错误是由 Mod_Security 生成的。

如果我尝试 __amp_source_origin=https://www.yourdomain.com,它可以正常工作!但当然,AMP 会对特殊字符进行编码。

你知道如何修复它吗?

谢谢!

保罗

解决方法

解决方案是向mod_security添加规则,以便接受请求网址中的%2F字符。