0


Python django解决跨域请求的问题

[Python django解决跨域请求的问题]

解决方案

1.安装django-cors-headers

pip3 install django-cors-headers

2.配置settings.py文件

INSTALLED_APPS =[...'corsheaders',
    ...] 

MIDDLEWARE_CLASSES =(...'corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware',# 注意顺序...)#跨域增加忽略
CORS_ALLOW_CREDENTIALS =True
CORS_ORIGIN_ALLOW_ALL =True
CORS_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
标签: django python 后端

本文转载自: https://blog.csdn.net/qq_41369057/article/details/131222575
版权归原作者 Codeoooo 所有, 如有侵权,请联系我们删除。

“Python django解决跨域请求的问题”的评论:

还没有评论