2013-05-09 46 views
0

我遇到问题:我正在django中开发一个必须响应远程请求的API视图。在Django中检索从中发出API请求的URL

有没有办法知道API调用从哪个url开始?

谢谢

+0

你的意思是来自用户的IP?或者你正在寻找或整个网站的网址? – 2013-05-09 12:43:04

+0

当整个网站的网址! – 2013-05-09 13:06:21

回答

0

是,在HTTP头中,会有一个Referer的线,这是从客户端来了,如果他们选择把它的URI。有些人选择做事情而不发送,在这种情况下,你可以做的事情不多。

有几篇关于解析HTTP头文件的文章,你可以使用其中的一个并借用他们的方法。

这是有几个很好的例子在它的职位之一:Parse raw HTTP Headers

你只需要做的Django抽丝头,所以你可以分析他们,这是不难做到的,我相信有用于在Web应用程序中获取标题的标准库中的函数。

+0

是的,重要的是,在一些请求中出现这个头,但在其他请求没有。 那么解决方案是强制发送? 我怎样才能让http_referer发送? 非常感谢你 – 2013-05-09 12:53:35

+0

对,如果这个标题不存在,没有一个很好的方法可以找出来自其他地方的来电,而不是来自你的网站的某个地方,你可以查看网站记录。如果他们来自其他地方或直接将呼叫输入程序,或者不发送标题,则无法很好地知道它们来自哪里。 – 2013-05-09 12:55:07

+0

以及如何才能为http_referer ti发送正确的值? 在我的情况下,api调用是在视图中使用urllib – 2013-05-09 12:57:29