django解决跨域请求的问题详解

 更新时间:2019年01月20日 08:31:06   作者:AFei0018  
这篇文章主要介绍了django解决跨域请求的问题详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

解决方案

1.安装django-cors-headers

pip 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python标准库pathlib操作目录和文件

    Python标准库pathlib操作目录和文件

    这篇文章主要为大家介绍了Python标准库pathlib操作目录和文件的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python如何调用外部系统命令

    Python如何调用外部系统命令

    这篇文章主要介绍了Python如何调用外部系统命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • pytest自动化测试fixture的作用域实例化顺序及可用性

    pytest自动化测试fixture的作用域实例化顺序及可用性

    这篇文章主要介绍了pytest自动化测试中fixture的作用域、实例化顺序及可用性的详解示例有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • 10分钟教你用Python实现微信自动回复功能

    10分钟教你用Python实现微信自动回复功能

    今天,我们就来用Python实现微信的自动回复功能吧,并且把接收到的消息统一发送到文件助手里面,方便统一查看。感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • 利用python实现聚类分析K-means算法的详细过程

    利用python实现聚类分析K-means算法的详细过程

    K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大,下面通过本文给大家介绍利用python实现聚类分析K-means算法的详细过程,感兴趣的朋友一起看看吧
    2021-11-11
  • Python变量、数据类型、数据类型转换相关函数用法实例详解

    Python变量、数据类型、数据类型转换相关函数用法实例详解

    这篇文章主要介绍了Python变量、数据类型、数据类型转换相关函数用法,结合实例形式详细分析了Python变量类型、基本用法、变量类型转换相关函数与使用技巧,需要的朋友可以参考下
    2020-01-01
  • 利用Python代码实现数据可视化的5种方法详解

    利用Python代码实现数据可视化的5种方法详解

    在数据科学中,有多种工具可以进行可视化。下面这篇文章主要给大家介绍了关于利用Python代码实现数据可视化的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-03-03
  • python和mysql交互操作实例详解【基于pymysql库】

    python和mysql交互操作实例详解【基于pymysql库】

    这篇文章主要介绍了python和mysql交互操作,结合实例形式详细分析了Python基于pymysql库实现mysql数据库的连接、增删改查等各种常见操作技巧,需要的朋友可以参考下
    2019-06-06
  • Pytest+Request+Allure+Jenkins实现接口自动化

    Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • python scipy求解非线性方程的方法(fsolve/root)

    python scipy求解非线性方程的方法(fsolve/root)

    今天小编就为大家分享一篇python scipy求解非线性方程的方法(fsolve/root),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论