我剛剛瞭解到Access-Control-Allow-Methods
標題,例如,Access-Control-Allow-Methods的默認值
Access-Control-Allow-Methods: OPTIONS, HEAD, GET
我從來沒有使用過這個頭(只Access-Control-Allow-Origin
),但我已經得到了CORS在過去的工作。
是默認允許所有方法,還是我得到了未定義行爲的幸運?
我剛剛瞭解到Access-Control-Allow-Methods
標題,例如,Access-Control-Allow-Methods的默認值
Access-Control-Allow-Methods: OPTIONS, HEAD, GET
我從來沒有使用過這個頭(只Access-Control-Allow-Origin
),但我已經得到了CORS在過去的工作。
是默認允許所有方法,還是我得到了未定義行爲的幸運?
只是爲了澄清,Access-Control-Request-Method
是由瀏覽器在CORS預檢請求中設置的請求標頭,它只能有一個值。 Access-Control-Allow-Methods
標題是一個CORS響應標題,它可以有多個值。我假設你問的是Access-Control-Allow-Methods
,因爲這是服務器指定的值。
Access-Control-Allow-Methods
標頭指示在特定端點上允許哪些HTTP方法用於跨源請求。如果你允許所有的HTTP方法,那麼它可以將值設置爲Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD
。但是,如果您想將端點限制爲僅有幾種方法,則應該只包含這些方法。
至於爲什麼你以前沒有看到這個,這個頭只用於CORS預檢請求。這可能是因爲您的應用程序沒有使用CORS預檢,然後更改了一些內容以觸發預檢。您的應用程序是否使用除GET/POST之外的任何HTTP方法或任何自定義HTTP標頭?
您可以瞭解更多關於此CORS預檢要求:http://www.html5rocks.com/en/tutorials/cors/
感謝您的更正。並且爲了澄清,CORS仍然*工作。我想知道我是否需要它,在某些情況下我沒有測試。 –
回答了我的問題:「此標題僅用於CORS預檢請求」。 –
我們可以看到這些標題的值?在我的情況下,我需要在標題中發送一個標記,但我可以看到只有名稱沒有值 – Taran
的Access-Control-Allow-Methods
默認爲允許通過所有簡單方法,甚至在預檢要求。作爲上https://www.w3.org/TR/cors/#preflight-request流動說(成功預檢請求的步驟7):
如果請求方法沒有在方法任何方法區分大小寫匹配,而不是一個簡單的方法,應用該緩存和網絡錯誤步驟。
,簡便的方法的定義是:
的方法被認爲是一種簡單的方法,如果它是爲下列中的一個的情況下,敏感的匹配:GET HEAD POST
因此,如果您有預檢POST請求(由於自定義HTTP標頭,說),並且不發送一個Access-Control-Allow-Methods
響應標頭,請求仍然可以繼續。
這似乎是一個非常好的事情,讓_browser_停止不必要的請求,以免打擾您的Web服務器。 –