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学习教程,伙伴们可以期待一下!有不清楚的地方可以留言!

相关文章
|
5月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
694 7
|
5月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
442 0
|
5月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
536 4
|
5月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
246 1
|
5月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
549 0
|
5月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
657 0
|
10月前
|
人工智能 前端开发 JavaScript
webpack-dev-server代理后端一直报CORS跨域或500错误
在Vue项目中使用Webpack的devServer代理后端接口时,遇到500错误。问题根源在于浏览器请求中携带的Origin头导致服务器报错,而Postman测试正常。通过分析发现,调整或移除Origin头可解决问题。解决办法包括:1) 在代理配置中添加正确的Origin头;2) 删除请求中的Origin头。文章还深入解析了Origin头的作用及changeOrigin配置的实际意义,并附带相关文档链接,帮助开发者更好地理解与解决类似跨域问题。
738 20
|
5月前
|
安全 API PHP
PHP中实现CORS跨域资源共享的方法
通过这种方式,你可以在PHP应用中灵活地实现CORS,以支持跨域Web应用的需求。
384 15
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
8136 90
|
JSON 安全 前端开发
浅析CORS跨域漏洞与JSONP劫持
浅析CORS跨域漏洞与JSONP劫持
885 3

推荐镜像

更多