在開發中採用了一個新的架構,將大部分客戶的留言功能集成到一個公共API提交保存,採用不一樣的用戶名區分,供客戶查詢本身網站的留言,這樣節約了客戶網站的資源,也提高了維護性。 javascript
那麼在提交時不能採用直接的post提交,不然會產生跳轉,使訪客混亂,因此採用ajax提交留言內容至公共服務器:http://wx.igooda.cn/index.php/messagesave,但嘗試後發現不能提交post請求,百度後查詢結果是跨域只能是get請求,這對留言內容多的來講,是不可行的。還有一種解決方案是採用jsonp請求,原理是在頁面中創建一個script腳本,導入外部腳本,再將外部腳本轉換爲結果反饋,這樣的方法也不可以很好的解決。 php
雖然javascript的跨域有限制,但php能夠跨域提交post請求,因此在網站內創建一個api,作爲post的中轉站,在提交給遠程服務器,這樣就能夠完成跨域post請求。 html
一、修改表單 前端
將form的action指向網站內的 api.php,創建一個隱藏字段: java
<input type="hidden" name="request_url" value="跨域的api地址">
二、創建企業網站內的 api.php ajax
function Post($url, $post = null) { if (is_array($post)) { ksort($post); $content = http_build_query($post); $content_length = strlen($content); $options = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-length: $content_length\r\n", 'content' => $content ) ); return file_get_contents($url, false, stream_context_create($options)); } } $request_url = $_POST['request_url']; $response = Post($request_url , $_POST); echo $response;三、ajax提交請求吧!相關的javascript代碼請查看下面的案例裏的源代碼。
這個客戶的網站就是採用了這樣的機制,前端代碼能夠經過查看源碼找到。 api