Python请求403错误
Python Requests 403 Error
我想将文件上传到网络服务器,为此我编写了一个像这样的简单客户端文件。
client.py
import requests
def main():
url_link = "http://localhost:8000/Home/UploadFile/"
fileObj= open('VOI-0204.zip', 'rb')
r=requests.post(url_link, files={'docfile': fileObj})
print r.text
if __name__ == '__main__':
main()
django url映射器声明如下:
urls.py
url(r'^Home/UploadFile/$', 'WebApp.views.uploadZip', name='uploadZip'),
每次我 运行 client.py 它都会给我这样的 403 错误。
[29/Aug/2015 10:28:02] "POST /Home/UploadFile/ HTTP/1.1" 403 2282
但是如果我像这样更改客户端文件中的 url_link
url_link = "http://localhost:8000/Home/UploadFile"
现在它显示服务器错误 [500] 像这样
[29/Aug/2015 10:33:32] "POST /Home/UploadFile HTTP/1.1" 500 63766
有什么想法吗??
Django 期望每个 POST 请求都有一个 CSRF 令牌。用 csrf_exempt
装饰器装饰您的视图,以便让此脚本成功 运行。检查 this。虽然我不建议走这条路。 CSRF 令牌是为了保护您。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def upload_zip(request):
...
您需要在视图中添加 csrf 令牌,如果您使用的是表单,请添加 {% csrf_token %}。
如果你需要做一个 ajax 请求,你需要实现一些 javascript 代码。
Django官方文档有一些很好的文章,你可以看看https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/
我想将文件上传到网络服务器,为此我编写了一个像这样的简单客户端文件。
client.py
import requests
def main():
url_link = "http://localhost:8000/Home/UploadFile/"
fileObj= open('VOI-0204.zip', 'rb')
r=requests.post(url_link, files={'docfile': fileObj})
print r.text
if __name__ == '__main__':
main()
django url映射器声明如下:
urls.py
url(r'^Home/UploadFile/$', 'WebApp.views.uploadZip', name='uploadZip'),
每次我 运行 client.py 它都会给我这样的 403 错误。
[29/Aug/2015 10:28:02] "POST /Home/UploadFile/ HTTP/1.1" 403 2282
但是如果我像这样更改客户端文件中的 url_link
url_link = "http://localhost:8000/Home/UploadFile"
现在它显示服务器错误 [500] 像这样
[29/Aug/2015 10:33:32] "POST /Home/UploadFile HTTP/1.1" 500 63766
有什么想法吗??
Django 期望每个 POST 请求都有一个 CSRF 令牌。用 csrf_exempt
装饰器装饰您的视图,以便让此脚本成功 运行。检查 this。虽然我不建议走这条路。 CSRF 令牌是为了保护您。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def upload_zip(request):
...
您需要在视图中添加 csrf 令牌,如果您使用的是表单,请添加 {% csrf_token %}。 如果你需要做一个 ajax 请求,你需要实现一些 javascript 代码。 Django官方文档有一些很好的文章,你可以看看https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/