2012-11-27 77 views
6

爲了建立一個適合CORS的測試套件(跨域請求),我需要能夠直接從腳本處理HTTP OPTIONS方法。因此,我有一個簡單的PHP腳本來檢測OPTIONS方法,並通過輸出一些特定的頭文件做出相應的反應。如何配置Apache讓PHP處理OPTIONS HTTP請求?

PHP方面不是問題。如果我使用curl來發出GET/POST/HEAD/PUT /等。要求他們都去劇本,它很好地處理它們。但是,如果我發出OPTIONS請求,它永遠不會到達腳本:Apache會立即回覆列出它認爲適合此資源的一組方法。我可以告訴腳本沒有運行(沒有日誌記錄,沒有任何輸出使它響應,等等)。

我一直在經歷Apache配置,確保沒有適用的.htaccess的方式,我已經調整了一些東西,如限制/ LimitExcept指令,但我不能讓它改變它的行爲。我也嘗試從我的年輕人那裏找到有關這方面的技術的信息:NPH(非解析頭文件)腳本;但顯然現在已經消失了(至少,我無法找到任何有關它的最新信息)。

所以問題是:我如何調整Apache的配置,以便它能讓我的腳本處理OPTIONS?

+0

這應該只是工作 - 只要你沒有限制或有一個特定的處理程序啓用選項。但是a)我們需要看你的.conf文件,其次這屬於服務器故障。將建議讓它遷移,但同時添加.conf文件。 – Robbie

+0

我已經包含了.conf,但它是一個龐大的配置,需要做很多事情(測試需要很多配置差異)。我的下一步就是將它分成兩部分,直到它成功運行,但我在這之前就希望找到潛在客戶,因爲這不是一件小事。 –

回答

3

我剛剛測試了我自己的PHP(5.3,Apache 2.2),它仍然有效(因爲它有一段時間)。 OPTIONS被髮送通過,並出現在$ _ SERVER數組中你會期望

的目標應該是打開設置恢復到默認值(這應該工作),然後建立你的conf回了你所需要的其他選項。否則,在沒有看到.conf文件的情況下,我們會盲目地進行搜索 - 所以這裏有一些需要注意的地方。

  1. 限制指令。你說你在那裏檢查,但只是爲了調試,刪除所有的引用。包括任何虛擬主機以及目錄可以單獨更改。
  2. 同爲LimitExcept中(你說你嘗試過 - 只是將它們全部刪除)
  3. 同時檢查的.conf和的.htaccess基於RequestHeaderREQUESTHEADER任何重定向或其他條件(做搜索和分析)
  4. [我我也剛剛讀了一些關於檢查THE_REQUEST的內容,但從未聽說過。值得檢查嗎?]
  5. 最後,檢查您沒有爲OPTIONS指定的特定處理程序,即Script OPTIONS /cgi-bin/optionshandler,並且您的PHP處理程序同樣被指定爲僅處理GET和POST。再次記住虛擬主機和目錄,.htaccess可以單獨更改,以便全部檢查。

這就是我能想到的。否則,正如我所建議的那樣,從頭開始(它的工作原理)並構建其他一切,直到它無法工作。

+0

一個古老的帖子,但它是研究最近問題時發現的最具信息含義的帖子。 最後,我的問題是我運行的是libapache2-mod-php5filter,而不是mod-php5。 (不知道爲什麼,我安裝了很久以前)。 php5filter不會將OPTIONS傳遞給PHP。切換到mod-php5爲我解決了這個問題。 – Fanjita