2014-01-16 212 views
4

所以我想,以使在Django跨源資源共享,這樣我就可以發佈到外部網站,它很容易做到,當我設置獲取請求源在Django請求

response["Access-Control-Allow-Origin"]="*" 

但我想讓它檢查起源是否在允許的起源列表中(實質上是爲了限制它只允許特定的站點),但我似乎無法在Django請求中的任何位置找到可以獲取起點信息的地方。

我試過使用request.META ['HTTP_HOST']但這只是返回正在發佈到的網站。有沒有人知道Request對象中的哪個位置可以獲取請求的來源?

回答

1

我強烈建議您使用django-cors-headers。它可以讓你定義CORS_ORIGIN_WHITELIST這是一個允許更多pythonic方式的來源列表。

+0

謝謝。我會考慮的! –

0

要回答「有人知道請求對象中哪裏可以得到請求的起源?」的問題,request.META ['REMOTE_ADDR']會給你你需要的嗎?

4

至於從request(這是我正在尋找的)獲取URL,請使用request.META['HTTP_REFERER']來代替。

+0

這會返回一個KeyError – softwareplay

+0

您使用的是什麼版本的Django?如果你打印'request.META.keys()',你會得到什麼?以下是關於請求meta的文檔:https://docs.djangoproject.com/en/1.9/ref/request-response/#django.http.HttpRequest.META –

+0

@ ZAD-Man它可能是他正在經歷django測試中的KeyError在這種情況下,沒有HTTP_REFERER。無論如何我不確定,但我認爲他應該使用REMOTE_HOST來獲得他想要的東西。 –