ajax跨域往php程式post資料時,php程式總是執行兩次的解決方案

來源:互聯網
上載者:User

標籤:

php程式是部署在IIS7上面,ajax提交資料時,遇到了兩個問題,一個就是跨域,一個php程式總會被執行兩次。

第一個問題的解決方案,是百度出來的,添加下面幾行代碼就可以了:

header(‘Access-Control-Allow-Origin:*‘);

header("Access-Control-Allow-Headers: x-requested-with,content-type");

header(‘Access-Control-Allow-Methods: OPTIONS,POST,GET‘);

其實,也可以直接在iis裡面設定,不用添加代碼,直接選擇網站,然後點右邊的http響應標題,在裡面直接配好,就可以了。

第二個問題,一直沒有百度出結果,只好FQ用google,一下就看明白了,然後順著線索找,終於理清楚了。

在CORS .net 跨域解決方案裡,是這樣介紹的(http://jingyan.baidu.com/article/03b2f78c190ad25ea237ae33.html)

同一個請求需要兩個相同請求地址的方法,一個標記為“POST”,另一個標記為“OPTIONS“,實體方法為標記”POST“的方法,這 裡”OPTIONS“方法不需要做任何邏輯操並且傳回值為void即可(其實OPTIONS請求為瀏覽器的校正,髮帶參數的POST請求時瀏覽器會先發一 個OPTIONS請求,檢驗request 頭資訊和response頭資訊一致後才真正發起POST請求)

抓包發現,確實如此,瀏覽器產生了兩個請求,OPTIONS service/service.php HTTP/1.1和POST /service/service.php HTTP/1.1

本想著像文中說的那樣,讓請求OPTIONS時,直接返回void,但是在看到配置php的時候,可以直接限制動作。試了一下,果然有用,現在ajax跨域,php程式只執行一次了。

iis裡配置方法如下:找到php程式網站,也可以選擇伺服器設定,點右邊的處理常式映射,找到php,點編輯,在彈出對話方塊裡,點要求節流,再選 謂詞,點下面謂詞之一,按照提示的輸入GET,POST,我是之前為了省事,直接是預設選項(全部謂詞),所以才遇到了這個問題。

ajax跨域往php程式post資料時,php程式總是執行兩次的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.