2014-01-16 63 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来获得他想要的东西。 –