2016-07-31 143 views
-1

我的代碼的相關部分如下所示。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 

因此,該消息是回來(我猜的),但我的瀏覽器不重定向。我錯過了什麼?

+2

「消息回來(我猜)」是什麼意思? – 2016-07-31 21:21:39

+0

@Dagon我的意思是基於我的PHP的響應頭文件(顯示問題),我的瀏覽器獲取重定向消息,但不會對它做任何事情。 – jonmrich

+0

這樣頁面不會變成'https:// something.com'? – 2016-07-31 21:24:16

回答

3

對PHP的請求是Ajax ...響應數據是我嘗試重定向到的頁面的完整HTML代碼。

位置標題意味着「您正在查找的資源已在此處」。這並不意味着「在主瀏覽器窗口中顯示此URL處的資源」。瀏覽器視口不會重定向,無論處理請求會重定向。

瀏覽器將遵循重定向,並將響應傳遞給Ajax回調函數(除非觸發錯誤,例如違反相同原點策略)。

如果要在瀏覽器中加載頁面,請不要使用Ajax。提交常規表格。 Ajax的整點是避免在主視圖中加載新文檔。