我已经浪费了很多时间试图从我的AMP页面重定向到其他页面。提交表单时,xhr操作通过POST发送数据来调用php文件。此php文件设置一个新位置,将页面重定向到另一个位置。我在php文件中要重定向的代码如下:
<?php
header("Content-type: application/json");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
$especi=$_POST["especialidad"];
$paises=$_POST["ES"];
$paismx=$_POST["MX"];
$paispr=$_POST["PR"];
$paiscl=$_POST["CL"];
$paisco=$_POST["CO"];
$paisar=$_POST["AR"];
if(isset($paises)){
$urlbase="https://www.dominio.es/p/";
$pais="ES";
$provin=$paises;
$pobla=0; //$_POST["zn2"];
}
/*
else if(isset($paismx)){
$urlbase="https://www.dominio.mx/p/";
$pais="MX";
$provin=$paismx;
$pobla=$_POST["zn2"];
}
else if(isset($paispr)){
$urlbase="https://www.dominio.com/p/";
$pais="PR";
$provin=$paispr;
$pobla=$_POST["zn2"];
}
else if(isset($paiscl)){
$urlbase="https://www.dominio.cl/p/";
$pais="CL";
$provin=$paiscl;
$pobla=$_POST["zn2"];
}
else if(isset($paisco)){
$urlbase="https://www.dominio.co/p/";
$pais="CO";
$provin=$paisco;
$pobla=$_POST["zn2"];
}
else if(isset($paisar)){
$urlbase="https://www.dominio.com.ar/p/";
$pais="AR";
$provin=$paisar;
$pobla=$_POST["zn2"];
}*/
$queryespe="SELECT * FROM tx WHERE Id='$especi'";
$resultespe = mysqli_query($link,$queryespe);
$fila = mysqli_fetch_array($resultespe);
$especialidad=$fila['Keyword'];
$especialidad=reemplazargui($especialidad);
$especialidad=reemplazarac($especialidad);
if($pobla!=0){
$querypo="SELECT * FROM ts WHERE Id='$pobla'";
$resultpo = mysqli_query($link,$querypo);
$filapo = mysqli_fetch_array($resultpo);
$poblacion=reemplazargui($filapo['Keyword']);
$ulr=$urlbase.$especialidad."/".reemplazarac($poblacion)."/";
mysqli_close($link);
header ("Location: $ulr");
die();
}else{
$querypo="SELECT * FROM tx_2 WHERE Id='$provin'";
$resultpo = mysqli_query($link,$querypo);
$filapo = mysqli_fetch_array($resultpo);
$poblacion=reemplazargui($filapo['Keyword']);
$ulr=$urlbase.$especialidad."/".reemplazarac($poblacion)."/";
mysqli_close($link);
$ulr = html_entity_decode($ulr);
header ("Location: $ulr");
die();
}
?>
该过程到达实体_并正确解码,我放在头中的url(ulr)是正确的。我从chrome网络分析中得到的响应是下一个(我不明白为什么同一个url存在两个启动器,而且它们不工作)。错误日志:
获取API无法加载https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com.从https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com到https://www.dominio.es/m/Alergologo/Albacete-Provincia/的重定向已被CORS策略阻止:访问-控制-允许-起源标头有一个值https://www.dominio.com/amp/*不等于提供的原点。因此,原产地http://www.dominio.com不允许访问。让服务器发送带有有效值的标头,或者,如果不透明的响应满足您的需求,请将请求的模式设置为'no-cors',以便在禁用CORS的情况下获取资源。
提取失败https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com:无法获取
未捕获错误:表单提交失败::获取失败https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com:无法获取 在北卡罗来纳报道。f、 在xhr impl上断言(log.js:295)。js:164
所以,我需要重定向到另一个页面,从AMP页面调用我正在显示的php文件,该文件必须重定向到最后一个页面。重定向无法使用此代码。
编辑:问题可能是CORS策略,但我已将这一行添加到htaccess文件中,并保持不起作用。
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
编辑2:修改标题:
ob_start();
header("Content-type: application/json");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
错误:
获取API无法加载https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com.重定向自'https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http://www.dominio.com“到”https://www.dominio2.es/m/Alergologo/Alicante-Provincia/'已被CORS策略阻止:'Access Control Allow Origin'标头具有值'https://www.dominio.com/amp/*'这不等于提供的原点。起源'http://www.dominio.com因此,不允许访问。让服务器发送带有有效值的头,或者,如果不透明响应满足您的需要,则将请求的模式设置为“no cors”,以获取禁用cors的资源。
编辑3:已解决
允许COR的收割台平齐解决了这个问题。它们必须添加到所有受影响的域中。
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
REPLACE,
header ("Location: $ulr");
die();
WITH,
header ("Location: $ulr");
?>
<script type="text/javascript">
location.href = '<?php echo $ulr ?>';
</script>
<?php
die();
解决方案添加到帖子中,编辑3。
允许COR的收割台平齐解决了这个问题。它们必须添加到所有受影响的域中。
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
问题内容: 不知道为什么这不起作用。这是代码: 而不是重定向页面,此输出到网页。它跳过了重定向。为什么?我怎样才能解决这个问题?page1.php是一个实际页面,与当前页面位于同一文件夹中。上面的代码是php文件的第一行。没什么 没有。甚至没有空格。 问题答案: Pekka在评论中回答了我的问题。他没有发布答案,所以我现在是。标头重定向后使用此方法。由于某种原因,页眉的其余代码在header()方
我是相当新的PHP,我做了一些研究,并尝试了别人的解决方案,但它不适合我。我想在执行特定代码后将用户重定向到另一个页面。我意识到没有错误信息,网站不会改变。所以我从代码中删除了几乎所有的内容,并将其放入一个小test.php文件中。同样的问题依然存在。 期望:页面应该立即执行php脚本,并将我重定向到“www.w3schools.com”。应该没有错误或其他消息。 结果:页面显示并加载html代码
问题内容: 这是我的档案。我想使其重定向,但是什么也没有发生。为了查看发生了什么,我在标题部分之前添加了回显。 它既不会引发错误,也不会重定向到index.php。怎么了?我已打开/关闭输出缓冲,但是没有任何东西可以使其重定向。我能做什么? 谢谢 问题答案: 我提醒自己,我已经在实际的测试环境中安装了xDebug,在对其进行了搜索之后,我发现了以下站点:http ://bugs.xdebug.or
问题内容: 请不要介意这是一个愚蠢的问题, 是否有可能在php中使用新标签页打开一个窗口 问题答案: 不,不可能。标头将仅在当前窗口/选项卡中重定向当前页面。
问题内容: 我知道它不需要两次获取数据。但是我的主要问题是如何在PDO中重置光标位置? 问题答案: AFAIK无法使用PDO重置光标位置-这可能与某些数据库的兼容性有关,这些数据库不支持重置内部光标。 如果要对结果进行两次迭代,请将其提取到数组并在此数组上进行迭代: 编辑 某些数据库支持可滚动游标。要使用该标记,请向方法添加标记(请参见PDOFetch文档页面上的示例)。但这只会增加前进或后退的可
我想将所有可能的url组合重定向到单个路径。 例如。 http:/例如。com--- https:/例如。com-- 超文本传输协议/example.com/abc/cde 我可以按照mod_rewrite设置处理1和3的情况,但不能执行2重定向,这有人可以帮我。 为了避免链接转换,我在网站示例中使用了escape one/in。 重新启动引擎 重写Cond%{HTTPS}关闭 重写Cond%{H