PHP Header重定向消息发送到浏览器,但不重定向

时间:2016-07-31 21:19:16

标签: php

我的代码的相关部分看起来像这样。

try
{
  $customer = \Stripe\Customer::create(array(
    'email' => $_POST['custEmail'],
    'source'  => $_POST['stripeToken'],
    'plan' => 'my_plan'
  ));
 header("Location:https://something.com"); 
  exit;
}
catch(Exception $e)
{
  //header('Location:oops.html');
    echo "no work";
  error_log("unable to sign up customer:" . $_POST['custEmail'].
    ", error:" . $e->getMessage());
}

我的PHP文件的响应包括:

HTTP/1.1 302 Found
Date: Sun, 31 Jul 2016 21:13:52 GMT
Server: Apache/2.4.23 (Amazon) OpenSSL/1.0.1k-fips PHP/5.6.22
X-Powered-By: PHP/5.6.22
Location: https://something.com
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

所以,消息回来了(我猜),但我的浏览器没有重定向。我错过了什么?

1 个答案:

答案 0 :(得分:3)

  

对PHP的请求是Ajax ...响应数据是我正在尝试重定向到的页面的完整HTML代码。

位置标题表示“您要查找的资源已在此处”。它并不意味着“在主浏览器窗口中显示此URL处的资源”。浏览器视口不会重定向,处理请求的任何内容都将重定向。

浏览器将遵循重定向,响应将传递给Ajax回调函数(除非它触发错误,例如同源策略违规)。

如果要在浏览器中加载页面,请不要使用Ajax。提交常规表格。 Ajax的重点是避免在主视图中加载新文档。