如何在PHP中为amp-form输出正确的标题?

时间:2017-11-20 11:07:17

标签: cors amp-html

关于放大器形式的CORS标题的文档可能更容易,而且我做的一切都是正确的,我仍然有点不知所措。

现在,我的表单似乎可以在我自己的网站以及Google的AMP结果中使用。但是,从我的开发网站开始,它并没有起作用;我也不确定它是否真的非常安全。以下是我目前使用的代码,该代码位于https://podnews.net

上的脚本中

这是试验和错误很多的结果,我无法帮助您认为文档可以更清楚地解决这个问题。

header('Cache-Control: private, no-cache');
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');
header('access-control-expose-headers: AMP-Access-Control-Allow-Source-Origin');
header('AMP-Access-Control-Allow-Source-Origin: https://podnews.net');
header('Content-Type: application/json');

特别是:$_SERVER['HTTP_ORIGIN']可以包含AMP缓存,据我所知。

这里有什么正确的有效值?如何添加多个值(假设至少有两个AMP缓存)?为什么它不在开发站点上工作,这类似于http://dev.podnews.net(它引发的错误是CORS错误,而不是关于在HTTP而不是HTTPS中的错误)。如何编写本文以便所有AMP开发人员都能轻松参考?

1 个答案:

答案 0 :(得分:5)

经过更多的摆弄,我认为答案是这里相当笨重的代码:

describe('#waitUntilExists', () => {  
  it('should wait for an element to be removed from DOM', () => {
    return I.amOnPage('/spinner')
      .then(() => I.seeElementInDOM('.loader'))
      .then(() => I.waitUntilExists('.loader'))
      .then(() => I.dontSeeElement('.loader'))
  });

  it('should wait for a non-exising element to be removed from DOM', () => {
    return I.amOnPage('/spinner')
      .then(() => I.dontSeeElement('.non-existing-class'))
      .then(() => I.waitUntilExists('.non-existing-class'))
      .then(() => I.dontSeeElement('.non-existing-class'))
  });
});

我希望这是一个很好的复制/粘贴能力的答案,其他人可能觉得有用。这是一项艰苦的工作!