2015-11-16 23 views
2

假設CORS預檢請求進入,但它指定了一個或多個Access-Control-Request-*標頭的不受支持的值。服務器應該如何與瀏覽器通信?如何處理無效的CORS預檢請求?

一些例子:

  • 瀏覽器發送帶有Access-Control-Request-Method: PUT預檢請求,但是服務器不允許指定的資源PUT請求。
  • 瀏覽器使用Access-Control-Request-Headers: X-PINGOTHER發送預檢請求,但服務器不允許/理解該標頭。

唯一的線索,我能找到位於在W3C documentation,這表明服務器應該「終止這個請求,」如果有一個與預檢反應的問題,但我不知道是什麼樣子的練習(服務器是否真的應該終止連接而不發送迴應?)。

或者,服務器是否不需要麻煩進行驗證,因爲瀏覽器會通過檢查Access-Control-Allow-*響應頭文件知道它做了錯誤的事情?

回答

0

Tomcat's CORS Filter返回接收到無效CORS預檢請求時403響應:

如果請求是無效的,或者是不允許的,則請求被拒絕,HTTP狀態代碼403(禁止)。 A flowchart,演示通過此過濾器的請求處理是可用的。

誠然,文件並沒有解釋爲什麼做到這一點,但至少它可以作爲一個起點。