如何執行重定向瀏覽器並在PHP中發送HTTP POST請求?如果您願意,可以使用HTTP POST請求的header("Location: file.php?foo=bar")
。PHP中的HTTP POST請求
回答
你不能要求一個網頁 - HTTP不允許這樣 - 如果你想通過重定向來傳遞參數必須將它們嵌入作爲GET變量的URL。
C.
這是不對的。您無法使用HTTP/3xx重定向將GET轉換爲POST,但可以使用HTTP/307將POST重定向至POST。 – EricLaw 2010-01-07 15:34:50
否 - 來自rfc2616: 「只有當第二個請求中使用的方法是GET或HEAD時,用戶代理纔可以執行所需的操作,而無需與用戶交互。」在實踐中,沒有我知道的瀏覽器爲此實現隱含的引出條款(即詢問用戶)。 C. – symcbean 2010-01-08 10:14:16
如果Web服務器收到一個GET請求,並且它需要對另一個Web服務器執行一個POST請求,作爲respose的一部分,它必須自己執行POST。 (對於PHP,您可能應該使用CURL。)HTTP不提供讓用戶代理(Web瀏覽器)爲服務器執行此操作的方法。被警告GET請求被允許隨意重複(因爲GET根據定義是冪等的),並且Web服務器可能不應該在每次收到GET請求時盲目地重複POST到另一個服務器。 – 2011-10-20 07:33:00
我不相信你可以通過在請求中重定向來讓瀏覽器POST數據。你僅限於GET。如果您希望瀏覽器發佈您需要構建<form>
並提交的內容。 (或者使用AJAX請求。)
PHP沒有這樣的東西。爲了完成你的例子,你可以簡單地說$_GET['foo'] = 'bar'; include("file.php")
,但是給予瀏覽器的URL不會被改變。
這並不重定向瀏覽器,但它可以執行POST請求。
將瀏覽器重定向我建議使用JavaScript。
一個例子形式,做POST和重定向
<FORM action="http://somesite.com/prog/adduser" method="post">
<P>
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname"><BR>
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname"><BR>
<LABEL for="email">email: </LABEL>
<INPUT type="text" id="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</P>
</FORM>
謝謝,雖然我向你保證簡單的形式浮現在腦海。它需要完全服務器端。顯然這是不可能的。 – 2010-01-07 13:24:10
我不知道爲什麼你不會有什麼需要這一點,但它是不可能在任何服務器端語言。
你可以使用JavaScript庫如jQuery使用POST請求
這個問題在這裏How do you POST to a page using the PHP header() function?問。
有人評論說,如果你已經有了數據,你爲什麼需要將它發佈到任何地方,爲什麼你不能僅僅處理該頁面中的數據呢?
您可能想要發佈已有數據的一個原因是外部網站。例如,您可能希望將數據直接發佈到PayPal,而不是讓用戶提交額外的表單。 – Chaim 2010-01-07 20:13:36
如果您需要在重定向時傳輸數據而不顯示URL中的數據,則可以使用$ _SESSION,首先將數據存儲到會話中,然後重定向頁面,重定向從會話獲取數據並銷燬會話數據後。
好的,如果您需要將數據傳輸到其他網站而不顯示在網址中,您必須使用Javascript代替...,例如將數據傳輸到payPal。只需製作一個表單並編寫一個JavaScript代碼以在頁面加載時自動提交表單。下面是示例代碼:
<form name="myform" action="handle-data.php">
Search: <input type='text' name='query' />
<a href="javascript: submitform()">Search</a>
</form>
<script type="text/javascript">
function submitform()
{
document.myform.submit();
}
</script>
- 1. eBay PHP HTTP POST請求?
- 2. HTTP POST請求
- 3. HTTP POST請求
- 4. 更改HTTP POST請求HTTPS POST請求:
- 5. Silverlight中的HTTP POST請求
- 6. iOS中的HTTP「POST」請求
- 7. 通過代理的HTTP POST請求php
- 8. 用於HTTP POST請求的PHP腳本
- 9. 在PHP緩慢的HTTP POST請求
- 10. 在POST中對JSON的HTTP POST請求
- 11. iOS http POST請求
- 12. Paraimpu HTTP POST請求
- 13. ASMX HTTP POST請求
- 14. Angular2 HTTP POST請求
- 15. Android http請求POST
- 16. HTTP POST請求AngularJS
- 17. HTTP POST請求與PHP +捲曲
- 18. 發送HTTP POST請求使用PHP
- 19. 發送HTTP POST請求與PHP
- 20. Http請求和PHP POST/GET VB.Net
- 21. 僞造的HTTP POST請求
- 22. Android上的HTTP POST請求
- 23. HTTP POST請求的Android
- 24. 與Erlang的HTTP POST請求
- 25. php http請求
- 26. 攔截http POST請求
- 27. Http Post請求c#xml
- 28. 關於Javascript HTTP POST請求?
- 29. 可可HTTP POST請求
- 30. 阻止HTTP POST請求
我不明白爲什麼你必須做到這一點。事實上,一定有其他更優雅的方式來解決你的問題。 – mauris 2010-01-07 13:09:18