跨域问题解决
CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,可让Ajax实现跨域访问。
其实,在服务器的response header中,加入"Access-Control-Allow-Origin: *"便可支持CORS,很是的简单,apache/nginx等怎么配置,见参考文档。
在Django中,有人开发了CORS-header的middleware只需在settings.py中做一些简单的配置即可,其他不用作任何修改,我们也不用自己手动的创建中间件对response处理了,直接用以下配置即可, 现在用起来服务器端完全开放,开启CORS,没有任何跨域烦恼
1,安装django-cors-headers库
pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple
2,添加到应用程序中
INSTALLED_APPS = [
... ,
"corsheaders" ,
... ,
]
3,在中间件中加监听响应
CorsMiddleware 需要放在第一位,不放在第一位,可能会造成某些请求没有添加CORS。
MIDDLEWARE = [
"corsheaders.middleware.CorsMiddleware" ,
... ,
]
4,设置访问白名单
CORS_ORIGIN_ALLOW_ALL为True, 指定所有域名(ip)都可以访问后端接口, 默认为False
CORS_ORIGIN_ALLOW_ALL = True
5,设置允许携带cookie
CORS_ALLOW_CREDENTIALS = True
6,设置默认允许请求头方法。
CORS_ALLOW_METHODS = [
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
]
最后我们在测试前面的vue调用实例:
测试OK。说明跨域请求配置没问题