因此,我正在尝试建立一个作为较大范式的边框的amp表格,但我需要从该amp表格以及我们的细分和分析数据中获取数据。我正在尝试使用amp表单发布到的中间页面来执行此操作,该页面将捕获并转发数据,然后将用户及其数据转发到完整表单。
我设置了放大器形式,简化的代码如下(简化为要在此处发布的一个字段,但经过测试且具有相同的问题):
<form class="amp-lead-form" method="post" action-xhr="<?php get_site_url() ?>/submit-amp-form.php" target="_top" custom-validation-reporting="show-first-on-submit">
<fieldset style="border: none;">
<label>
<input class="text_input" type="text"
id="first_name"
name="first_name"
placeholder="First Name"
required
pattern="([a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð,.'-])\w+">
<span visible-when-invalid="valueMissing"
validation-for="first_name"><br>Please enter your first name.</span>
<span visible-when-invalid="patternMismatch"
validation-for="first_name">
<br>Please enter just your first name.</span>
</label>
<div style="clear: both;"></div>
<input class="amp-form-submit" type="submit" name="submit" value="GET STARTED">
</fieldset>
</form>
中间页代码如下(这是测试表单,安全性的基本方法,一旦我弄清楚了数据,就会添加我需要的所有其他内容):
<?php
require_once( dirname( __FILE__ ) . '/wp-load.php' );
$domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://".get_site_url();
header("Content-type: application/json"); //I also tried with multipart/form-data and application/x-www-form-urlencoded
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: ". str_replace('.', '-',get_site_url()) .".cdn.ampproject.org");
header("AMP-Access-Control-Allow-Source-Origin: " . get_site_url());
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
header("AMP-Redirect-To: ".get_site_url()."/submit-amp-form.php");
header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin");
//dump data to page so I can view
$data = file_get_contents('php://input');
var_dump($data);
var_dump($_POST);
?>
现在中间页仅显示数据,因此我可以看到它已正确发送,但显示的是:
DATA:
string(0) ""
array(0) {
}
告诉我数据没有正确发送或接收。当我将表单的方法更改为get并将action-xhr更改为action时,它会发送并接收get数据。我研究了互联网,发现通常这意味着端点未实现CORS安全性,但是我相信页面上具有所有必需的标头,因此我真的不知道从这里开始应该去哪里。有帮助吗?
答案 0 :(得分:0)
如果是CORS问题,您会在浏览器的控制台中看到错误提示您CORS。 你检查了吗?您的控制台应为您提供错误提示的好提示。 我猜您没有从端点得到可接受的响应。 这可能是由于您的var_dumps结尾。