Python学习教程:Python的cors跨域模块主要做了什么?

简介: Python学习教程:Python的cors跨域模块主要做了什么?

在当下web开发环境下,前后端分离开发是一个比较主流的架构模式。那么因为不再是模板化开发,以至于前后端有可能不在一个域下(即服务器的域名是www.a.com, 客户端域名是 www.b.com),这就造成了 浏览器跨域禁止的问题。

Python学习教程:Python的cors跨域模块主要做了什么?

实际上对于前端也有很多的跨域的解决方案。那么其中一种当下也比较主流的方式是在后端开启cors。在我们python 的 web框架中, django,flask,tornado 都有各自的cors的库来处理跨域的问题。但这些cors具体做了什么呢?我们今天的Python学习教程就来跟大家剖析一下

screenshot

就像我们知道的,在一次http请求中包含有headers头信息,大家都是了解的,那么在浏览器首次通过options进行访问的会后,会由浏览器返回一些header信息来判断是否允许访问,那么在后端setheader的时候添加了一些允许信息,那么他们分别都是什么呢?我们今天给大家介绍最主要的一些键值对:

'Access-Control-Allow-Origin:' 该key是代表允许访问的域名,当前demo的value是 代表允许所有域名访问,这必然是一个不安全的,但在开发测试阶段可以这样配置,生产环境要格外注意

'Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE' 我们知道 http请求 基于restful 有一些方法 那么这里就是允许访问的方法,例如上边的post get options delete 等,如果我们去掉 get,那么将无法通过get方法访问该服务

'Access-Control-Allow-Headers:x-requested-with,content-type' 在options预处理的时候,如果服务器返回了这个响应头的信息,则会允许请求

‘Access-Control-Allow-Credentials: true’ 当设置了该key后 才能允许 cookie被传过去,否则是传不过去的。这里也是要注意的。

我们以tornado为例,在setdefaulthaders方法定义一下内容,既可以实现不需要额外安装cors库,也可以正常跨域:

上边这个例子是一个简单的demo,大家可以根据自己的业务需求再去做额外的调整。本书记也总之在于对这些header的一些了解。如果有不清楚的地方,大家也可以自行百度google,可以得到更加清晰精准的解释。

以上就是基于服务器端 对请求headers里添加的允许访问的限制参数,通过将response总进行setheaders,浏览器就知道本次请求是否允许访问。我介绍的这些也是比较常见或者说最为核心的一些跨域允许访问的键值对。希望对大家有所帮助。下期的Python学习教程,伙伴们可以期待一下!有不清楚的地方可以留言!

相关文章
|
6月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
727 7
|
6月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
470 0
|
6月前
|
安全 API PHP
PHP中实现CORS跨域资源共享的方法
通过这种方式,你可以在PHP应用中灵活地实现CORS,以支持跨域Web应用的需求。
404 15
|
6月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
560 4
|
6月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
601 0
|
6月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
737 0
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
651 159
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
488 159
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性

推荐镜像

更多