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

相关文章
|
1月前
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
592 90
|
2天前
|
数据采集 机器学习/深度学习 自然语言处理
Python学习的自我理解和想法(16)
这是我在B站千锋教育课程中学Python的第16天总结,主要学习了`datetime`和`time`模块的常用功能,包括创建日期、时间,获取当前时间及延迟操作等。同时简要介绍了多个方向的补充库,如网络爬虫、数据分析、机器学习等,并讲解了自定义模块的编写与调用方法。因开学时间有限,内容精简,希望对大家有所帮助!如有不足,欢迎指正。
|
2天前
|
数据挖掘 Python
Python学习的自我理解和想法(14)
这是学习Python第14天的总结,基于B站千锋教育课程内容。重点介绍了`math`模块的常用功能,如取绝对值、向上/向下取整、计算π值、幂运算、对数、三角函数等。这些函数广泛应用于科学计算、数据分析和工程领域。通过掌握`math`模块,可实现高效数学运算,甚至编写计算器程序。尽管开学后时间有限,但仍坚持每天学习一到两个模块,希望读者谅解内容简略之处。如有错误,欢迎指正!
|
2天前
|
Python
Python学习的自我理解和想法(12)
本文记录了学习Python第12天的内容,主要包括回调函数、闭包函数、函数作用域、filter方法、map方法和装饰器函数等核心概念。通过定义、语法、实例及优缺点分析,深入浅出地讲解了这些技术的应用场景与实现方式。其中,回调函数适合异步编程,闭包可访问外部变量,装饰器用于增强函数功能而不改变原代码。文章基于B站千锋教育课程整理,非原创代码,旨在分享学习心得,欢迎指正!
|
13天前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
2天前
|
Python
Python学习的自我理解和想法(15)
这是作者学习Python第15天的总结,基于B站千锋教育课程内容。文章主要介绍了`OS模块`和`random模块`的常用功能。`OS模块`涵盖文件与文件夹的操作,如获取当前目录、创建/删除文件夹、重命名、判断文件是否存在等;`random模块`则包含生成随机数及从列表中随机抽取数据的功能。因开学时间有限,内容精简为每天一到两个模块的学习笔记,附带作者的理解与语法示例,欢迎指正交流。
|
2天前
|
Python
Python学习的自我理解和想法(13)
这是我在学习Python第13天的总结,基于B站千锋教育课程内容。主要学习了模块的基础知识和pip工具的使用。模块是包含Python定义和语句的文件,可通过多种方式导入(如import、from...import等)。pip用于管理Python扩展包,支持安装、卸载、更新等功能。虽然开学后时间有限,但我会坚持学习并不断完善理解。如有错误,欢迎指正!
|
1月前
|
JSON 缓存 前端开发
对CORS(跨域)的一些见解
CORS(跨域资源共享)是W3C标准,用于解决AJAX跨源请求限制。浏览器与服务器需共同支持CORS,浏览器自动处理请求头,开发者无需额外操作。CORS分为简单请求与非简单请求:简单请求满足特定条件(如方法为GET/POST/HEAD且头信息有限制),浏览器直接发送;非简单请求需先进行“预检”请求(OPTIONS方法),确认服务器允许后才发送实际请求。服务器回应需包含Access-Control-Allow-Origin等字段,以控制跨域访问权限。
64 10
|
13天前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
14天前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。

热门文章

最新文章