簡體   English   中英

Django REST API 設置允許單個端點的主機

[英]Django REST API set allowed hosts for individual endpoints

我想為不同的 Django REST API 端點設置不同的 ALLOWED_HOSTS 值。 這可能嗎? 以下是更多詳細信息:

我有一個由 Django REST API 后端、React 前端、Postgresdb 和 nginx 組成的設置,每個都在 docker 容器中運行,由 docker compose 管理。 我公開了前端從用戶瀏覽器訪問的 Django API 端點,因此我將前端的域添加到允許的主機。 但是,我有一個特定的 API 端點,它應該只接受來自前端 docker 容器的請求,而從不接受來自外部的請求。 它應該只用於前端和后端容器之間的通信。 因此,在這種情況下,我必須將允許的主機限制為 docker 容器的 ip。 這兩種設置都是可能的並且有效,但我只能在全局 Django 設置中選擇兩者之一。 我的問題是:是否可以為單個端點/url 設置允許的主機?

我想如果沒有干凈的方法,我可以使用 HttpRequest.get_host() 運行手動檢查以根據容器名稱驗證請求主機嗎?

這當然是可能的。

在純 Django 上下文中,我將其實現為一個Django 中間件,它攔截請求、查看路徑和請求主機、源 IP 並執行它需要的操作。

在 Django REST Framework 上下文中,我將其實現為一個額外的身份驗證類,因為如果需要,它將可以訪問 Django REST Framework 上下文。

最后,我還建議使用額外的身份驗證來保護這個“秘密”端點——最簡單的可能是前端容器已知的額外秘密標頭( X-Nik-Secret: very ?;-))。 該檢查可以類似地在中間件或身份驗證中實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM