我用apm-form元素创建了APM页面。表单在我的服务器和本地环境上工作得很好。但是,当我访问网站表单AMP url时,我无法发送任何内容。在我的控制台中我收到此错误:
从'https://example.co.uk/form.php?_gl=....GSg..&__amp_source_origin=https%3A%2F%2Fexample.co.uk'获取'https://example-co-uk.cdn.ampproject.org'的访问权限已被CORS政策阻止:'Access-Control-Allow-Origin'标题的值'http://example.test'不等于提供的来源。让服务器发送带有效值的标头,或者,如果不透明的响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。
我知道如何修复Cors问题。但请注意
标头的值为'http://example.test'
Amp-form具有设置动作-xhr到//example.co.uk/form.php。在form.php中设置所有标头:
header('AMP-Access-Control-Allow-Source-Origin: https://example.co.uk');
header("AMP-Same-Origin: true");
header("Access-Control-Allow-Credentials: true");
header ("Access-Control-Allow-Origin: https://example-co-uk.ampproject.org");
header ("Access-Control-Expose-Headers: Content-Length, X-JSON");
header ("Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS");
以前我正在开发这个页面。我发送到带有example.test的form.php的服务器版本的header部分。我假设Google以某种方式缓存了这个example.test。我不知道缓存的位置以及如何清除此缓存。
我试图使用https://developers.google.com/amp/cache/update-cache更新缓存。我卡住了,我从谷歌得到了404
有什么建议如何告诉AMP example.test被example.co.uk取代?
当缓存更新不起作用时 - 您可以:
1)更新Sitemap并更改页面的最后更新标记(google bot会检查)
2)您可以将标题更改为
Header set Access-Control-Allow-Origin '*'
3)保持这样 - 据说google每24小时更新一次缓存。