问题描述
在 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字符。