脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python django解决跨域请求的问题

Python django解决跨域请求的问题

2023-08-09 12:56Codeoooo Python

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

[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

到此这篇关于Python django解决跨域请求的问题的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/qq_41369057/article/details/131222575

延伸 · 阅读

精彩推荐
  • Python通过实例了解python__slots__使用方法

    通过实例了解python__slots__使用方法

    这篇文章主要介绍了通过实例了解python__slots__使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    冷冰若水2582020-09-15
  • Pythonflask框架实现修改密码和免密登录功能

    flask框架实现修改密码和免密登录功能

    flask是python web开发的常用框架之一。本文将讲述flask如何实现修改密码和免密登录功能...

    杨传伟11662021-11-12
  • Python哪种Python框架适合你?简单介绍几种主流Python框架

    哪种Python框架适合你?简单介绍几种主流Python框架

    这篇文章主要介绍了几种主流的Python框架,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下...

    少女狙击手8692020-08-04
  • Python用Python轻松开发数据库取数下载工具

    用Python轻松开发数据库取数下载工具

    而在dash_table中还有很多高级特性,可以极大程度上丰富DataTable()所渲染网页表格的交互能力,今天的文章作为「交互表格篇」的下篇,我们就来一起学习其...

    Python大数据分析11302021-04-19
  • Python浅谈numpy 中dot()函数的计算方式

    浅谈numpy 中dot()函数的计算方式

    这篇文章主要介绍了浅谈numpy 中dot()函数的计算方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    努力就是魅力5492021-10-27
  • PythonPython开发网站目录扫描器的实现

    Python开发网站目录扫描器的实现

    这篇文章主要介绍了Python开发网站目录扫描器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    一清7322021-05-31
  • PythonDjango如何开发简单的查询接口详解

    Django如何开发简单的查询接口详解

    这篇文章主要给大家介绍了使用Django如何开发简单的查询接口的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Django具有一定的参考学...

    628 财经5682021-06-27
  • PythonPython解惑之True和False详解

    Python解惑之True和False详解

    这篇文章主要给大家介绍了关于Python中常用的数据类型bool(布尔)类型的两个值:True和False的相关资料,通过示例代码给大家进行了解惑,让对这两个值有...

    FOOFISH25342020-09-30