![](/img/trans.png)
[英]CORS policy error: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed
[英]Django and CORS policy with multiple allowed hosts
我有一個帶有NGINX和gunicorn的ubuntu服務器上運行的Django小項目。
一切都很正常,當用戶訪問www .example.com的,但是,當用戶訪問example.com,而不是www.example.com,這是它分崩離析。 我在fetch命令中使用一些javascript,從我的API(Django REST)獲取數據,並且返回:
Access to fetch at 'https://www.example.com/builds/apidata/4'
from origin 'https://example.com' has been blocked by CORS
policy: No 'Access-Control-Allow-Origin' header is present on the requested
resource. If an opaque response serves your needs, set the request's mode to
'no-cors' to fetch the resource with CORS disabled.
我找到的最簡單的解決方案是從我的settings.py
文件中的ALLOWED_HOSTS
中刪除example.com,但是當用戶忘記www.
他們會遇到404錯誤。
CORS錯誤消息還指出我可以更改請求模式,但是我不知道這樣做的安全性。
我還嘗試在我的域設置中使用從example.com到www.example.com的重定向,但這似乎也不起作用。
任何建議,將不勝感激!
在您的Web服務器配置中,您可以在www子域上添加一個Access-Control-Allow-Origin
標頭,該標頭將允許來自根域的請求。
這將起作用: Access-Control-Allow-Origin: https://example.com
盡管您當然可以使用CORS允許這種跨域使用,但一種更簡單,更簡潔的解決方案是僅允許一個根域(無論是否使用www
。
將PREPEND_WWW
設置為True
是確保請求始終使用www
版本的簡單方法,因為當使用非www
版本時,它會導致CommonMiddleware
發出重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.