AJAX POST&跨域 解决方案 - CORS

AJAX POST&跨域 解决方案 - CORS

http://www.cnblogs.com/Darren_code/p/cors.html
 
    一晃又到新年了,于是开始着手好好整理下自己的文档,顺便把一些自认为有意义的放在博客上,记录成点的点滴。


跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作,所以跨域能力也算是前端工程师的基本功之一。      和大多数跨域的解决方案一样,JSONP也是我的选择,可是某天PM的需求变了,某功能需要改成支持POST,因为传输的数据量比较大,GET形式搞不定。所以折腾了下闻名已久的 CORS(跨域资源共享,Cross-Origin Resource Sharing ,这边文章也就是折腾期间的小记与总结。


概述

  • CORS能做什么:         正常使用AJAX会需要正常考虑跨域问题,所以伟大的程序员们又折腾出了一系列跨域问题的解决方案,如JSONP、flash、ifame、xhr2等等。         本文介绍的CORS就是一套AJAX跨域问题的解决方案。
  • CORS的原理:         CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。
  • CORS浏览器支持情况如下图:

喜闻乐见、普大喜奔的支持情况,尤其是在 移动终端上,除了opera Mini;      PC上的现代浏览器都能友好的支持,除了IE9-,不过前端工程师对这种情况早应该习惯了...

CORS启航       假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误," 跨域"也就以此由来。      利用 CORS, http://www.test2.com 只需添加一个标头,就可以允许来自 http://www.test1.com 的请求,下图是我在PHP中的 hander() 设置, “*”号表示允许任何域向我们的服务端提交请求

也可以设置指定的域名,如域名 http://www.test2.com ,那么就允许来自这个域名的请求 :

当前我设置的header为“*”,任意一个请求过来之后服务端我们都可以进行处理&响应,那么在调试工具中可以看到其头信息设置,其中见红框中有一项信息是“ Access-Control-Allow-Origin:* ”,表示我们已经启用CORS,如下图。   PS: 由于demo都在我厂的两台测试机间完成,外网也不能访问,所以在这就不提供demo了,见谅

简单的一个header设置,一个支持跨域&POST请求的server就完成了:)         当然,如果没有开启CORS必定失败的啦,如下图:

问题&小结

  • 刚刚说到的兼容性。CORS是W3C中一项较新的方案,所以部分浏览器还没有对其进行支持或者完美支持,详情可移至
  • 安全问题。CORS提供了一种跨域请求方案,但没有为安全访问提供足够的保障机制,如果你需要信息的绝对安全,不要依赖CORS当中的权限制度,应当使用更多其它的措施来保障,比如OAuth2。            自认为的cors使用场景:
  • cors在移动终端支持的不错,可以考虑在移动端全面尝试;PC上有不兼容和没有完美支持,所以小心踩坑。当然浏览器兼容就是个伪命题,说不准某个浏览器的某个版本就完美兼容了,说不准就有点小坑,尼玛伤不起!~
  • jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择;
  • 配合新的JSAPI(fileapi、xhr2等)一起使用,实现强大的新体验功能。

Read more

【MySQL进阶·命令行工具】11.6 mysqlpump

【MySQL进阶·命令行工具】11.6 mysqlpump

【MySQL进阶·命令行工具】11.6 mysqlpump * * * * mysqlpump MySQL mysqlpump 是 MySQL 5.7 及更高版本中引入的一个实用程序,用于逻辑备份 MySQL 和 MariaDB 数据库。mysqlpump 提供了比 mysqldump 更多的功能和灵活性,尤其是在处理大型数据库和复杂数据库结构时。 主要特性 1. 并行导出 mysqlpump 支持并行导出多个数据库或表,这可以显著提高备份大型数据库的速度。 2. 条件导出 可以基于 WHERE 子句的条件导出特定的行。 3. 用户定义的导出 允许用户定义哪些表、列或数据需要导出。 4. 元数据导出 可以导出存储过程和函数、触发器、事件调度器等对象的定义。 使用方法 基本语法如下: mysqlpump [options] [database ...] 例如,要备份名为

By Ne0inhk
【MySQL进阶·服务器优化】12.1 配置项优化

【MySQL进阶·服务器优化】12.1 配置项优化

【MySQL进阶·服务器优化】12.1 配置项优化 * * * * * * * * * * * * 配置项优化 MySQL作为流行的开源关系型数据库管理系统,其性能优化一直是数据库管理员和开发者关注的重点。在MySQL的性能优化中,配置文件(通常是my.cnf或my.ini)的调整是至关重要的环节。通过合理配置MySQL的各项参数,可以显著提升数据库的运行效率,减少资源消耗,提高系统稳定性。 一、内存配置优化 内存是MySQL性能优化的关键因素之一。合理设置内存参数可以有效提高数据访问速度,减少磁盘I/O操作。 1. innodb_buffer_pool_size 这是InnoDB存储引擎用于缓存数据和索引的内存区域大小。通常建议将其设置为系统总内存的50%-80%,具体取决于其他应用程序的内存需求。 2. query_cache_size 查询缓存的大小。对于读操作较多的应用,适当增加查询缓存可以提高查询效率。但需要注意的是,在高并发写操作的场景下,查询缓存可能会导致性能下降,因此需要根据实际情况调整。 3. t

By Ne0inhk
【MySQL进阶·服务器优化】12.3 sys数据库

【MySQL进阶·服务器优化】12.3 sys数据库

【MySQL进阶·服务器优化】12.3 sys数据库 * * * * * * * * sys数据库 MySQL的sys数据库是一个包含了一系列视图、函数和过程的特殊数据库,它主要用于帮助数据库管理员(DBAs)和开发者更轻松地诊断MySQL服务器的性能问题、理解其工作原理以及优化查询性能。sys数据库是MySQL 5.7及更高版本中引入的一个特性,旨在简化复杂的诊断任务,并提供直观的性能分析。 sys数据库的主要功能 1. 性能监控 sys数据库提供了丰富的视图,用于监控MySQL服务器的性能,包括查询执行统计、用户活动、锁等待、文件I/O等指标。这些视图基于底层的信息模式(information_schema)和性能模式(performance_schema),为管理员和开发者提供了一个更高级别的、更易于理解的性能监控界面。 2. 诊断工具 除了监控功能外,sys数据库还包含一系列过程和函数,这些过程和函数可以作为诊断工具,帮助用户快速识别并解决性能瓶颈。例如,通过调用某些函数,用户可以分析慢查询日志,找出执行缓慢的查询语句;通过执

By Ne0inhk
Faiss的基本使用

Faiss的基本使用

Faiss的基本使用 * * * * * Faiss的基本使用 Faiss,全称Facebook AI Similarity Search,是一个用于高效相似性搜索和稠密向量聚类的库。它特别适用于大规模数据集的场景,能够提供快速的近似最近邻搜索。Faiss在推荐系统、图像检索、语音识别等领域有着广泛的应用。 一、安装Faiss 首先,你需要安装Faiss库。你可以通过pip来安装: pip install faiss-cpu 如果你需要GPU加速的版本,你可以安装faiss-gpu: pip install faiss-gpu 二、数据准备 Faiss主要处理的是高维稠密向量。在使用Faiss之前,你需要准备好你的向量数据集。这通常是一个二维的NumPy数组,其中每一行代表一个向量。 import numpy as np # 假设我们有1000个128维的向量 num_vectors = 1000 dim = 128 # 生成随机向量作为示例 vectors = np.random.rand(num_vectors,

By Ne0inhk