1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python django解决跨域请求的问题

Python django解决跨域请求的问题

时间:2020-04-13 19:50:10

相关推荐

Python  django解决跨域请求的问题

解决方案

1.安装django-cors-headers

pip3 install django-cors-headers

2.配置settings.py文件

INSTALLED_APPS = [...'corsheaders',...] MIDDLEWARE_CLASSES = (...'corsheaders.middleware.CorsMiddleware','monMiddleware', # 注意顺序 ...)#跨域增加忽略CORS_ALLOW_CREDENTIALS = TrueCORS_ORIGIN_ALLOW_ALL = TrueCORS_ORIGIN_WHITELIST = ('*')CORS_ALLOW_METHODS = ('DELETE','GET','OPTIONS','PATCH','POST','PUT','VIEW',)CORS_ALLOW_HEADERS = ('XMLHttpRequest','X_FILENAME','accept-encoding','authorization','content-type','dnt','origin','user-agent','x-csrftoken','x-requested-with','Pragma',)

OK!问题解决!

其他解决方案

另外还从网上看到其他两种解决方案,但都不太合适。在此列出,供大家参考

1.使用JSONP

使用Ajax获取json数据时,存在跨域的限制。不过,在Web页面上调用js的script脚本文件时却不受跨域的影响,JSONP就是利用这个来实现跨域的传输。因此,我们需要将Ajax调用中的dataType从JSON改为JSONP(相应的API也需要支持JSONP)格式。

JSONP只能用于GET请求。

2.直接修改Django中的views.py文件

修改views.py中对应API的实现函数,允许其他域通过Ajax请求数据:

def myview(_request):

response = HttpResponse(json.dumps({“key”: “value”, “key2”: “value”}))

response[“Access-Control-Allow-Origin”] = “*”

response[“Access-Control-Allow-Methods”] = “POST, GET, OPTIONS”

response[“Access-Control-Max-Age”] = “1000”

response[“Access-Control-Allow-Headers”] = “*”

return response

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。