Django2支持跨域方法

Posted wurijie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django2支持跨域方法相关的知识,希望对你有一定的参考价值。

让django支持跨域的原理比较简单,让django的http返回头中支持来源域名就OK了,通过安装django-cors-headers插件并设置相关参数即可实现,方法如下:

 

1.安装django-cors-headers

pip3 install django-cors-headers

 

2.修改settings.py

  • INSTALLED_APPS中增加
    INSTALLED_APPS = [
        django.contrib.admin,
        django.contrib.auth,
        django.contrib.contenttypes,
        django.contrib.sessions,
        django.contrib.messages,
        django.contrib.staticfiles,
        corsheaders,                  #新增项
    ]

     

  • MIDDLEWARE中增加
    MIDDLEWARE = [
        django.middleware.security.SecurityMiddleware,
        django.contrib.sessions.middleware.SessionMiddleware,
        corsheaders.middleware.CorsMiddleware,             #新增项
        django.middleware.common.CommonMiddleware,         
        django.contrib.auth.middleware.AuthenticationMiddleware,
        django.contrib.messages.middleware.MessageMiddleware,
        django.middleware.clickjacking.XFrameOptionsMiddleware,
    ]

     

  • 文件末尾增加如下行设置

    # 跨域增加忽略
    CORS_ALLOW_CREDENTIALS = True
    CORS_ORIGIN_ALLOW_ALL = True
    CORS_ORIGIN_WHITELIST = (
        *
    )

     

3.验证跨域是否生效

从localhost:8080网站通过axios发送跨域请求到工作于8888端口的django,请求的返回头中增加了如下内容:

  Access-Control-Allow-Credentials: true

  Access-Control-Allow-Origin: http://localhost:8080

axios工作正常~

 

 

以上是关于Django2支持跨域方法的主要内容,如果未能解决你的问题,请参考以下文章

跨域访问方法介绍--使用片段识别符传值

Android:使用支持片段管理器时复制片段

怎么解决跨域问题

PHP中运用jQuery的Ajax跨域调用实现代码

win10的Edge不支持AJAX跨域访问吗?

跨域解决方法