同源策略和跨域解决方案——JSONP、CORS、代理跨域—vue-cli脚手架搭建代理服务器
同源策略和跨域解决方案——JSONP、CORS、代理跨域—vue-cli脚手架搭建代理服务器
跨域,是指浏览器不能执行其它网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript实施的安全限制。想要了解为什么跨域,我们需要知道什么是同源策略
1、同源策略
同源 :如果两个页面的协议,域名和端口 都相同,则两个页面具有相同的源 。如果两个页面的协议,域名和端口 其中有任何一项不相同,则称为跨域
同源策略 (英文全称 Same origin policy)是浏览器 提供的一个安全功能。
MDN 官方给定的概念:同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制 。
通俗的理解:浏览器规定,A 网站的 JavaScript,不允许和非同源的网站 C 之间,进行资源的交互,例如:
无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB
无法接触非同源网页的 DOM
无法向非同源地址发送 Ajax 请求、
注意: http://localhost:8080与http://127.0.0.1:8080不属于同源,也就是说,即使IP地址一致,但是一个是域名,一个是IP地址,也不属于同源。即属于跨域
跨域: 同源 指的是两个 URL 的协议、域名、端口一致 ,反之,则是跨域 。
出现跨域的根本原因:浏览器的同源策略 不允许非同源的 URL 之间进行资源的交互。
下面是浏览器对跨域请求的拦截:
注意:浏览器允许发起跨域请求,但是,跨域请求回来的数据,会被浏览器拦截,无法被页面获取到!
下表给出了相对于 http://www.test.com/index.html 页面的同源检测,供大家了解同源和跨域:
URL
是否同源
原因
http://www.test.com/other.html
是
同源(协议、域名、端口相同)
https://www.test.com/about.html
否
协议不同(http 与 https)
http://blog.test.com/movie.html
否
域名不同(www.test.com 与 blog.test.com)
http://www.test.com:7001/home.html
否
端口不同(默认的 80 端口与 7001 端口)
http://www.test.com:80/main.html
是
同源(协议、域名、端口相同)
2、跨域解决方案
现如今,实现跨域数据请求,主要有三种解决方案,分别是 JSONP 、CORS 、代理跨域proxy 。
2.1、JSONP
JSONP(JSON with Padding)出现的早,兼容性好(兼容低版本IE)。是前端程序员为了解决跨域问题,被迫想出来的一种临时解决方案。缺点是只支持 GET 请求 ,不支持 POST 请求。
原理:
标签不受浏览器同源策略的影响,可以通过src属性,请求非同源的js 脚本
下面用具体例子来讲解它的具体实现方式:
首先定义一个success回调函数
通过
这样就能够请求到对应路径下的数据了
注意:
JSONP和Ajax之间没有任何关系,不能把JSONP请求数据的方式叫做Ajax,因为JSONP没有用到XMLHttpRequest这个对象。
通过href src所请求下来的, js脚本, css文件, 或者image图片文件, 视频文件, 都不存在跨域问题. 只有通过ajax请求才存在跨域问。所以Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有src这个属性的标签都拥有跨域的能力,比如
2.2、CORS
跨源/域资源共享(CORS,Cross-Origin Resource Sharing)出现的较晚,是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。它是 W3C 标准 ,属于跨域 Ajax 请求的根本解决方案。支持 GET 和 POST 请求。缺点是不兼容某些低版本的浏览器 。
原理:CORS是浏览器为 AJAX 请求设置的一种跨域机制,让其可以在服务端允许的情况下进行跨域访问。主要通过 HTTP 响应头来告诉浏览器服务端是否允许当前域的脚本进行跨域访问。
注意:CORS要求在后端服务器配置相应的HTTP请求头,以允许来自特定域的跨域请求。对于前端应用在发送跨域请求时,需要确保请求头中包含适当的信息。一般情况下,浏览器会自动在请求头中添加所需的信息,但有时需要手动设置。
什么情况下需要CORS?
由 XMLHttpRequest 或 Fetch API 发起的跨源 HTTP 请求
Web 字体(CSS 中通过 @font-face
使用跨源字体资源)
WebGL 贴图
使用 drawImage() 将图片或视频画面绘制到 canvas
来自图像的 CSS 图形 (en-US)等等
内容有点多,如果下面内容不想了解,可以自行通过目录直接跳转到【CORS跨域请求简单例子】
跨域资源共享将 AJAX 请求分成了两类:简单请求和非简单请求。其中简单请求符合下面 2 个特征。
简单请求【了解】
通常发起的请求中只有请求方法和目标地址,这就是一个简单请求
MDN上对简单请求的介绍:
请求方法为 GET、POST、HEAD 其中之一。
请求头只能使用下面的字段且不能超过四个:
Accept(浏览器能够接受的响应内容类型)
Accept-Language(浏览器能够接受的自然语言列表)
Content-Type (请求对应的类型,只限于 text/plain、multipart/form-data、application/x-www-form-urlencoded)
Content-Language(浏览器希望采用的自然语言)
Range(只允许简单的范围标头值 如 bytes=256-
或 bytes=127-255
)【FireFox没有Range】
【注意:Content-Type 的属性值 application/json 不在其中,一旦加上对于简单请求的跨域就会失效】
非简单请求【了解】
简单请求中任意一条要求不符合的即为非简单请求。有些跨域请求需要在请求头中添加额外的参数【后端配置】,这样就超出的简单请求的范围,浏览器在检测该跨域请求的时候出现一个错误,这个错误就是在发送 预检请求(OPTIONS请求) 的时候出现的。
预检请求【了解】
浏览器在发送跨域请求的时候会发送一个预检请求【它是浏览器对非简单跨域的一种探测行为】,请求方法为OPTIONS,预检请求的 Access-Control-Allow-Headers 中会添加上我们请求时额外的请求头,Access-Control-Allow-Methods 是本次请求的请求方法。
注意:预检请求不是我们能控制的,它是浏览器对非简单跨域的一种探测行为,同时跨域请求会发送本体请求和预检请求两次请求
所以服务端要注意,当请求方式为 "OPTIONS" 时只需要返回HTTP头即可,也就是预检请求时只需要返回HTTP头,遇到本体请求再做业务处理
对于预检请求我们知道是何物即可,重点在于前端的配置
关于Access-Control-Allow-Origin
对于跨域请求,服务器返回的头信息中必须包含这个字段
在前端开发时,我们经常会在浏览器网络请求中看到,Access-Control-Allow-Origin
响应标头指定了该响应的资源是否被允许与给定的来源(origin)共享。
其中下面字段表明,该资源可以被任意 外源访问。
Access-Control-Allow-Origin: *
如果资源所有者想限制他的资源只能 通过 https://foo.example
来访问,那么我们可以这样做:
Access-Control-Allow-Origin: https://foo.example
除了Access-Control-Allow-Origin之外还有下面的服务器返回的允许跨域标识:
Access-Control-Allow-Methods【请求方法】
Access-Control-Allow-Credentials【是否允许浏览器发起cookie,针对不同方式发起请求需要在前端或者稍微进行些配置】
Access-Control-Allow-Headers【请求头】
Access-Control-Expose-Headers【服务端允许跨域请求能够访问的HTTP头信息】
Access-Control-Max-Age【控制预检请求有效期,单位秒】
大家如果想要详细了解可以查看MDN文档
CORS跨域请求简单例子
前后端如何搭配进行CORS设置,假设我们有一个前端应用部署在 http://frontend.example.com
,需要访问后端API部署在 http://backend.example.com
。
后端设置(服务器端):
在后端服务器上,你需要配置相应的HTTP头部,以允许来自特定域的跨域请求。这通常在服务器的响应头中进行设置。以下是一个示例,使用Node.js和Express框架:
const express = require('express');
const app = express();
// 允许来自 frontend.example.com 的跨域请求
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://frontend.example.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
// 处理实际的API逻辑
// ...
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
示例中,Access-Control-Allow-Origin
表示允许的跨域来源,Access-Control-Allow-Methods
表示允许的HTTP方法,Access-Control-Allow-Headers
表示允许的请求头。
前端设置:
前端应用在发送跨域请求时,需要确保请求头中包含适当的信息。一般情况下,浏览器会自动在请求头中添加所需的信息,但有时需要手动设置。
fetch('http://backend.example.com/api/data', {
method: 'GET',
headers: {
'Authorization': 'Bearer token', // 示例授权头部
},
})
.then(response => response.json())
.then(data => {
// 处理返回的数据
})
.catch(error => {
// 处理错误
});
示例中,fetch
请求会自动附带上请求头中的授权信息,同时浏览器会在请求中添加 Origin
头部,用于指示请求的源。
总结
在简单请求中,只要满足简单请求的要求,一般情况下,是不怎么需要服务端去进行配置的,除了Access-Control-Allow-Origin
这个字段是必备的
OPTIONS请求作为预检请求,就算请求方法没有在Access-Control-Allow-Methods
规定范围内也不会出现错误,但是我们不能自己发送OPTIONS请求
CORS跨域设置涉及到后端和前端的配合。后端通过设置响应头来允许特定的跨域请求,而前端则需要确保请求头中包含适当的信息。这样可以保障安全地进行跨域资源访问
参考文档:MDN
参考视频:【前端CORS跨域手把手教程】https://www.bilibili.com/video/BV1M84y1v7qH?vd_source=f18af6bf744c2e89a221022960ec1abe
2.3、代理跨域proxy
代理跨域就是在客户端【前端】和服务器【后端】之间放一个用于代理的服务器【与发送请求的客户端同源】,不存在跨域问题
原理:客户端与代理服务器同源,不存在跨域;服务器之间的通信不使用 Ajax技术,不会出现跨域问题,服务器之间通信使用传统的 http 请求就行了
Ajax 是前端技术,你得有浏览器,才有window对象,才有xhr,才能发ajax请求,服务器之间通信就用传统的 http 请求就行了
可以选取的代理服务器:
nginx:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
vue-cli开启代理服务器 devServer.proxy
由于我们前端使用 nginx 的开销较大,所以这里只讲解使用 vue-cli 脚手架开启服务器,如果有需要的使用 nginx 的同学,可以去官方文档查看
vue-cli 代理服务器配置
方法一
在vue.config.js中添加如下配置:
// CommonJS模块化规范中 使用require引入
const { defineConfig } = require('@vue/cli-service')
// module.export是NodeJS模块化中CommonJS模块化规范的暴露
module.exports = defineConfig({
...
// 开启代理服务器,解决跨域问题
devServer:{
// 端口问题:因为使用vue-cli开启的代理服务器,端口号已经指定为当前服务器端口,所以proxy指定的是后端服务器的端口
proxy:'http://localhost:5000'
}
})
修改完配置文件,需要修改接收请求的服务器为代理服务器【App.vue】
import axios from 'axios';
export default {
name: "App",
methods:{
getStudents(){
// response和error都是对象,需要通过具体属性获取我们想要的值
axios.get('http://localhost:8080/students').then(response=>{
console.log('请求成功,数据:',response.data);
},error=>{
// error:AxiosError{message: 'Network Error',name:'AxiosError',code: 'ERR_NETWORK',config: {…}, request: XMLHttpRequest,…}
// error.message:Network Error
console.log('请求失败,失败的原因:',error,error.message);
})
}
}
};
这样就能通过代理服务器得到目标服务器的数据,从而实现跨域
注意:
proxy指定的URL和端口是后端服务器的URL和端口,因为代理服务器的URL和端口与我们项目开启的服务器一致,不需要再指定,只需要指定需要接收请求的后端服务器即可
修改完vue.config.js配置文件需要重新启动服务器
虽然我们修改接收请求的服务器为http://localhost:8080,但是由于我们目标服务器带有/students,也就是需要获取students数据,所以代理服务器也需要带上students,写为http://localhost:8080/students
优点:配置简单
缺点:1、不能配置多个代理【指定为URL和端口,请求就不能够转发给别人】,2、不能灵活的控制请求是否走代理 。
方法二
解决方法一的两个缺点:1、不能配置多个代理【指定为URL和端口,请求就不能够转发给别人】,2、不能灵活的控制请求是否走代理 。
编写vue.config.js配置具体代理规则:
module.exports = defineConfig({
...
// 开启代理服务器【方式二】
devServer: {
proxy: {
// '/api'为请求前缀,匹配所有'/api'开头的请求路径
'/api': {
// target为目标地址
target: 'http://localhost:5000',
// pathRewrite重写路径,使用正则表达式 "^/api"以/api开头的替换为""空字符串
pathRewrite:{'^/api':''},
ws: true, // websocket
changeOrigin: true // 用于控制请求头中的host值 建议开启 不告诉服务器真实的请求路径和端口
// vue中ws和changeOrigin不写,默认是true,但是react不写为false
},
'/riluo': {
target: 'http://localhost:5001',
pathRewrite:{'^/riluo':''},
}
}
}
})
App.vue
获取学生信息
获取汽车信息
注意:
因为我们在请求路径中添加了请求前缀,所以后端服务器收到时会同样收到带请求前缀的路径,所以为了后端服务器还收到原先的不带请求前缀的路径,需要对请求前缀进行过滤,我们就需要在Vue.config.js中进行配置,为请求前缀添加配置项pathRewrite路径重写
ws配置用于支持websocket
changeOrigin配置项:这个配置项的设置true、false不会影响请求的完成,只是说对于后端服务器能不能识别出请求来源于哪个服务器。
优点:可以配置多个代理,且可以灵活的控制请求是否走代理
缺点:配置略微繁琐,请求资源时必须加前缀。
看到这里,你应该对同源策略和代理跨域的解决有了大致的了解,后面可以通过项目进行自身检测。如果有错,欢迎大家的指正。
你可能感兴趣的:(web前端,前端,ajax,vue,javascript,html,http)
移动端城市区县二级联动选择功能实现包
good2know
本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
Linux系统配置(应用程序)
1风天云月
Linux linux 应用程序 编译安装 rpm http
目录前言一、应用程序概述1、命令与程序的关系2、程序的组成3、软件包封装类型二、RPM1、RPM概述2、RPM用法三、编译安装1、解包2、配置3、编译4、安装5、启用httpd服务结语前言在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两
关于流媒体播放器EasyPlayer和EasyPlayerPro的介绍以及其区别
EasyDarwin
EasyDarwin 音视频 ffmpeg 人工智能 大数据 ar
EasyPlayer是一款流媒体播放器系列项目,它支持多种流媒体协议的播放,包括但不限于RTSP、RTMP、HTTP、HLS、UDP、RTP、File等。除此之外,EasyPlayer还支持本地文件播放和多种功能特性,包括本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等。EasyPlayer核心基于ffmpeg,稳定、高效、可靠、可控。随着多年的不断发展和迭代,EasyPlayer基于成功的实践
SpringMVC的执行流程
1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,
2018-09-27 aop相关
蒋超_58dc
1.静态织入,需要使用aspectj专用的compilermaven工程可以采用:https://www.mojohaus.org/aspectj-maven-plugin/2.动态织入,配合spring,创建代理来执行3.
最新阿里四面面试真题46道:面试技巧+核心问题+面试心得
风平浪静如码
前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni
包含日志获取webshell
陈望_ning
日志文件关闭:Apache目录下的httpd.conf文件#ErrorLog"logs/error.log"#CustomLog"logs/access.log"common加#号为注释不产生日志文件如果去掉#将会在Apache/logs/目录下产生日志文件linux:access_logerror_logwindows:access.logerror.logaccess_log每一行记录了一次网
Matrix-Breakout 2 Morpheus靶场解题过程
信息收集目标探测靶机目标很明显就是61.139.2.141了扫描开放端口发现22、80、81访问端口主机访问80翻译一下,并没有发现什么审查源代码发现里面有一张图片,下载下来看看是否有图片的隐写wgethttp://61.139.2.141/trinity.jpegstegoveritas-itrinity.jpeg-o/home/kali/Desktop/11分解后发现什么都没有,里面的keep
02-Breakout靶机攻略
ZLlllllll0
02-Breakout靶机
第一步搭建靶机下载地址:https://download.vulnhub.com/empire/02-Breakout.zip下载好了之后直接用VM打开然后右击虚拟机,把网络连接改成nat模式第二步,信息收集然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址nmap192.168.109.1/24扫
uniapp微信小程序 - 详解微信小程序平台用户授权登录全流程,uniapp v3版本中小程序端开发下用户点击登录后获取手机号/昵称/性别/头像等信息完成登录(提供完整示例代码,一键复制开箱即用)
十一猫咪爱养鱼
前端组件与功能(开箱即用) uniapp常见问题解决 uniapp vue3 uniapp3小程序授权登录 微信小程序登录获取用户信息教程 获取用户昵称手机号头像信息登录 vue3版本小程序平台授权登录 uniap小程序端用户登录流程 uni完整的小程序平台登录源码
效果图在uniapp微信小程序端开发中,超详细实现用户授权登录完整功能源码,用户授权后获取手机号/昵称/头像/性别等,提供完整思路流程及逻辑讲解。uniappVue3和Vue2都能用,你也可以直接复制粘贴,然后改下参数放到你的项目中去就行。整体思路做功能之前,先来看一下整体流程是
Selenium 特殊控件操作与 ActionChains 实践详解
小馋喵知识杂货铺
selenium 测试工具
1.下拉框单选操作(a)使用SeleniumSelect类(标准HTML标签)Selenium提供了内置的Select类用于操作标准下拉框,这种方式简单且直观。fromselenium.webdriver.support.uiimportSelect#定位下拉框dropdown=Select(driver.find_element("id","dropdown_id"))#通过以下三种方式选择单个
微信公众号回调java_处理微信公众号消息回调
weixin_39607620
微信公众号回调java
1、背景在上一节中,咱们知道如何接入微信公众号,可是以后公众号会与咱们进行交互,那么微信公众号如何通知到咱们本身的服务器呢?咱们知道咱们接入的时候提供的url是GET/mp/entry,那么公众号以后产生的事件将会以POST/mp/entry发送到咱们本身的服务器上。html2、代码实现,此处仍是使用weixin-java-mp这个框架实现一、引入weixin-java-mpcom.github.
[spring6: Mvc-网关]-源码解析
推荐阅读:[spring6:Mvc-函数式编程]-源码解析GatewayServerMvcAutoConfiguration@AutoConfiguration(after={HttpClientAutoConfiguration.class,RestTemplateAutoConfiguration.class,RestClientAutoConfiguration.class,FilterAu
centos7安装配置 Anaconda3
Anaconda是一个用于科学计算的Python发行版,Anaconda于Python,相当于centos于linux。下载[root@testsrc]#mwgethttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.shBegintodownload:Anaconda3-5.2.0-L
人工智能应用研究快讯 2021-11-30
峰谷皆平
[HTML]ArtificialIntelligenceforSkinCancerDetection:ScopingReviewATakiddin,JSchneider,YYang,AAbd-Alrazaq...JournalofMedicalInternet...,2021ABSTACT:Background:Skincanceristhemostcommoncancertypeaffectin
Selenium基础教程
lemontree1945
selenium python 测试工具
1.Selenium环境安装1.1浏览器安装Chrome和ChromeDriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/注意:驱动版本号要和浏览器版本号一致;安装后关闭浏览器自动更新:services.msc:打开系统服务找到和google相关的服务,全部修改为禁用1.2安装第三方库seleniumpipinstall
Android GreenDao介绍和Generator生成表对象代码
目录(?)[-]介绍创建工程转载请注明:http://blog.csdn.net/sinat_30276961/article/details/50052109最近无意中发现了GreenDao,然后查看了一些资料后,发现这个数据库框架很适合用,于是乎,查看了官网的api,并自己写了一个小应用总结一下它的使用方法。介绍按照国际惯例,在开篇,总要先介绍一下什么是GreenDao吧。首先需要说明的是Gr
【Jupyter】个人开发常见命令
TIM老师
# Pycharm & VSCode python Jupyter
1.查看python版本importsysprint(sys.version)2.ipynb/py文件转换jupyternbconvert--topythonmy_file.ipynbipynb转换为mdjupyternbconvert--tomdmy_file.ipynbipynb转为htmljupyternbconvert--tohtmlmy_file.ipynbipython转换为pdfju
用代码生成艺术字:设计个性化海报的秘密
本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准
你的连接不是专用连接攻击者可能试图从 github.com 窃取你的信息(例如,密码、消息或信用卡)。 --解决办法
我遇到了.检查安全软件或企业防火墙/代理(包括VPN)这个问题,关了就好,我是用来xbox加速github,所以先开在关既可以加速又可以访问这个错误表明你的浏览器(MicrosoftEdge)无法安全地连接到GitHub,因为遇到了证书验证问题(NET::ERR_CERT_AUTHORITY_INVALID)。错误信息明确指出网站使用了HSTS(HTTPStrictTransportSecurit
vue element 封装表单
影子信息
vue vue.js javascript 前端
背景:在前端系统开发中,系统页面涉及到的表单组件比较多,所以进行了简单的封装。封装的包括一些Form表单组件,如下:input输入框、select下拉框、等实现效果:理论知识:表单组件官方链接:点击跳转封装组件:封装组件的思路:不封装element组件,每一个input组件绑定一个form对象,例如官网。简单封装element组件,利用for循环生成form表单的每一项el-form-item。进
前端面试每日 3+1 —— 第39天
浪子神剑
今天的面试题(2019.05.25)——第39天[html]title与h1、b与strong、i与em的区别分别是什么?[css]写出你知道的CSS水平和垂直居中的方法[js]说说你对模块化的理解[软技能]公钥加密和私钥加密是什么?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。前端面试每日3+1题,以面试题来驱动学习,每天进步一点!让努力成为一种习惯,让奋斗成为一种享受!欢迎在Iss
重复文件清理工具,附免费链接
mixiumixiu
其他
链接:https://pan.baidu.com/s/1s_Zx1eHp5Y-XnbbGldIgvw?pwd=kjex提取码:kjex复制这段内容后打开百度网盘手机App,操作更方便哦
GDP经济社会人文民生栅格数据下载网站汇总
疯狂学习GIS
本文为“GIS数据获取整理”专栏(https://blog.csdn.net/zhebushibiaoshifu/category_10857546.html)中第八篇独立博客,因此本文全部标题均由“8”开头。本文对目前主要的GDP、社会与经济数据获取网站加以整理与介绍,若需其它GIS领域数据(如遥感影像数据、气象数据、土地土壤数据、农业数据等),大家可以点击上方专栏查看,也可以看这一篇汇总文
mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置
AY05
mac os 10.9 mysql
#终端内运行sudoapachectlstart#启动Apachesudoapachectlrestart#重启Apachesudoapachectlstop#停止Apache#配置Apachesudovi/private/etc/apache2/httpd.conf#将里面的这一行去掉前面的##LoadModulephp5_modulelibexec/apache2/libphp5.so#配置P
二级域名分发系统商业版全开源v3版
CloseAi论坛
程序源码 二级域名分发系统商业版 开源
介绍:名分发-快乐二级域名分发源码主要是二级域名分发网站源码,域名接口配置自己研究吧网盘下载地址:https://zijiewangpan.com/NbX6950sYLn图片:
搭建云手机教程
云博客-资源宝
智能手机
搭建云手机教程本教程由分享:ziyouhua资源宝整理分享:www.httple.net首先检查自己vps是否支持这个项目sudoaptinstallcpu-checkerkvm-ok如果显示INFO:/dev/kvmexistsKVMaccelerationcanbeused表示支持,可以继续往下看ac13首先安装dockercurl-fsSLhttps://get.docker.com|sud
【MySQL】MySQL数据库如何改名
武昌库里写JAVA
面试题汇总与解析 spring boot vue.js sql java 学习
MySQL建库授权语句https://www.jianshu.com/p/2237a9649ceeMySQL数据库改名的三种方法https://www.cnblogs.com/gomysql/p/3584881.htmlMySQL安全修改数据库名几种方法https://blog.csdn.net/haiross/article/details/51282417MySQL重命名数据库https://
大学社团管理系统(11831)
codercode2022
java spring boot spring echarts spring cloud sentinel java-rocketmq
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项目截图有需要的同学,源代码和配套文档领取,加文章最下方的名片哦!
web报表工具FineReport常见的数据集报错错误代码和解释
老A不折腾
web报表 finereport 代码 可视化工具
在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释,如果有说的不准确的地方,也请各位小伙伴纠正一下。
NS-war-remote=错误代码\:1117 压缩部署不支持远程设计
NS_LayerReport_MultiDs=错误代码
Java的WeakReference与WeakHashMap
bylijinnan
java 弱引用
首先看看 WeakReference
wiki 上 Weak reference 的一个例子:
public class ReferenceTest {
public static void main(String[] args) throws InterruptedException {
WeakReference r = new Wea
Linux——(hostname)主机名与ip的映射
eksliang
linux hostname
一、 什么是主机名
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 linuxsir.org 这样的;
主机名是用于什么的呢?
答:在一个局域网中,每台机器都有一个主
oracle 常用技巧
18289753290
oracle常用技巧 ①复制表结构和数据 create table temp_clientloginUser as select distinct userid from tbusrtloginlog ②仅复制数据 如果表结构一样 insert into mytable select * &nb
使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException
酷的飞上天空
exception
有一个线上环境使用的是c3p0数据库,为外部提供接口服务。最近访问压力增大后台tomcat的日志里面频繁出现
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResou
IT系统分析师如何学习大数据
蓝儿唯美
大数据
我是一名从事大数据项目的IT系统分析师。在深入这个项目前需要了解些什么呢?学习大数据的最佳方法就是先从了解信息系统是如何工作着手,尤其是数据库和基础设施。同样在开始前还需要了解大数据工具,如Cloudera、Hadoop、Spark、Hive、Pig、Flume、Sqoop与Mesos。系 统分析师需要明白如何组织、管理和保护数据。在市面上有几十款数据管理产品可以用于管理数据。你的大数据数据库可能
spring学习——简介
a-john
spring
Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只能由EJB完成的事情。然而Spring的用途不仅限于服务器端的开发,从简单性,可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。其主要特征是依赖注入、AOP、持久化、事务、SpringMVC以及Acegi Security
为了降低Java开发的复杂性,
自定义颜色的xml文件
aijuans
xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#FFFFFF</color> <color name="black">#000000</color> &
运营到底是做什么的?
aoyouzi
运营到底是做什么的?
文章来源:夏叔叔(微信号:woshixiashushu),欢迎大家关注!很久没有动笔写点东西,近些日子,由于爱狗团产品上线,不断面试,经常会被问道一个问题。问:爱狗团的运营主要做什么?答:带着用户一起嗨。为什么是带着用户玩起来呢?究竟什么是运营?运营到底是做什么的?那么,我们先来回答一个更简单的问题——互联网公司对运营考核什么?以爱狗团为例,绝大部分的移动互联网公司,对运营部门的考核分为三块——用
js面向对象类和对象
百合不是茶
js 面向对象 函数创建类和对象
接触js已经有几个月了,但是对js的面向对象的一些概念根本就是模糊的,js是一种面向对象的语言 但又不像java一样有class,js不是严格的面向对象语言 ,js在java web开发的地位和java不相上下 ,其中web的数据的反馈现在主流的使用json,json的语法和js的类和属性的创建相似
下面介绍一些js的类和对象的创建的技术
一:类和对
web.xml之资源管理对象配置 resource-env-ref
bijian1013
java web.xml servlet
resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联
<resource-env-ref>
<resource-env-ref-name>资源名</resource-env-ref-name>
<resource-env-ref-type>查找资源时返回的资源类
Create a composite component with a custom namespace
sunjing
https://weblogs.java.net/blog/mriem/archive/2013/11/22/jsf-tip-45-create-composite-component-custom-namespace
When you developed a composite component the namespace you would be seeing would
【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter
bit1129
mongodb
一、复本集为什么要加入Arbiter这个角色 回答这个问题,要从复本集的存活条件和Aribter服务器的特性两方面来说。 什么是Artiber? An arbiter does
not have a copy of data set and
cannot become a primary. Replica sets may have arbiters to add a
Javascript开发笔记
白糖_
JavaScript
获取iframe内的元素
通常我们使用window.frames["frameId"].document.getElementById("divId").innerHTML这样的形式来获取iframe内的元素,这种写法在IE、safari、chrome下都是通过的,唯独在fireforx下不通过。其实jquery的contents方法提供了对if
Web浏览器Chrome打开一段时间后,运行alert无效
bozch
Web chorme alert 无效
今天在开发的时候,突然间发现alert在chrome浏览器就没法弹出了,很是怪异。
试了试其他浏览器,发现都是没有问题的。
开始想以为是chorme浏览器有啥机制导致的,就开始尝试各种代码让alert出来。尝试结果是仍然没有显示出来。
这样开发的结果,如果客户在使用的时候没有提示,那会带来致命的体验。哎,没啥办法了 就关闭浏览器重启。
结果就好了,这也太怪异了。难道是cho
编程之美-高效地安排会议 图着色问题 贪心算法
bylijinnan
编程之美
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class GraphColoringProblem {
/**编程之美 高效地安排会议 图着色问题 贪心算法
* 假设要用很多个教室对一组
机器学习相关概念和开发工具
chenbowen00
算法 matlab 机器学习
基本概念:
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
开发工具
M
[宇宙经济学]关于在太空建立永久定居点的可能性
comsci
经济
大家都知道,地球上的房地产都比较昂贵,而且土地证经常会因为新的政府的意志而变幻文本格式........
所以,在地球议会尚不具有在太空行使法律和权力的力量之前,我们外太阳系统的友好联盟可以考虑在地月系的某些引力平衡点上面,修建规模较大的定居点
oracle 11g database control 证书错误
daizj
oracle 证书错误 oracle 11G 安装
oracle 11g database control 证书错误
win7 安装完oracle11后打开 Database control 后,会打开em管理页面,提示证书错误,点“继续浏览此网站”,还是会继续停留在证书错误页面
解决办法:
是 KB2661254 这个更新补丁引起的,它限制了 RSA 密钥位长度少于 1024 位的证书的使用。具体可以看微软官方公告:
Java I/O之用FilenameFilter实现根据文件扩展名删除文件
游其是你
FilenameFilter
在Java中,你可以通过实现FilenameFilter类并重写accept(File dir, String name) 方法实现文件过滤功能。
在这个例子中,我们向你展示在“c:\\folder”路径下列出所有“.txt”格式的文件并删除。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例
dcj3sjt126com
c array
# include <stdio.h>
int main(void)
{
int a[5] = {1, 2, 3, 4, 5};
//a 是数组的名字 5是表示数组元素的个数,并且这五个元素分别用a[0], a[1]...a[4]
int i;
for (i=0; i<5; ++i)
printf("%d\n",
PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引
dcj3sjt126com
primary
PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表有下列字段:会员编号 INT会员姓名
java集合辅助类 Collections、Arrays
shuizhaosi888
Collections Arrays HashCode
Arrays、Collections
1 )数组集合之间转换
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
a)Arrays.asL
Spring Security(10)——退出登录logout
234390216
logout Spring Security 退出登录 logout-url LogoutFilter
要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退出登录的URL为“/j_spring_secu
透过源码学前端 之 Backbone 三 Model
逐行分析JS源代码
backbone 源码分析 js学习
Backbone 分析第三部分 Model
概述: Model 提供了数据存储,将数据以JSON的形式保存在 Model的 attributes里,
但重点功能在于其提供了一套功能强大,使用简单的存、取、删、改数据方法,并在不同的操作里加了相应的监听事件,
如每次修改添加里都会触发 change,这在据模型变动来修改视图时很常用,并且与collection建立了关联。
SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter
乒乓狂魔
springMVC
这一篇文章主要介绍下HttpMessageConverter整个注册过程包含自定义的HttpMessageConverter,然后对一些HttpMessageConverter进行具体介绍。
HttpMessageConverter接口介绍:
public interface HttpMessageConverter<T> {
/**
* Indicate
分布式基础知识和算法理论
bluky999
算法 zookeeper 分布式 一致性哈希 paxos
分布式基础知识和算法理论
BY
[email protected]
本文永久链接:http://nodex.iteye.com/blog/2103218
在大数据的背景下,不管是做存储,做搜索,做数据分析,或者做产品或服务本身,面向互联网和移动互联网用户,已经不可避免地要面对分布式环境。笔者在此收录一些分布式相关的基础知识和算法理论介绍,在完善自我知识体系的同
Android Studio的.gitignore以及gitignore无效的解决
bell0901
android gitignore
github上.gitignore模板合集,里面有各种.gitignore : https://github.com/github/gitignore
自己用的Android Studio下项目的.gitignore文件,对github上的android.gitignore添加了
# OSX files //mac os下 .DS_Store
成为高级程序员的10个步骤
tomcat_oracle
编程
What
软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。
Why
得到更多的报酬!因为你的薪水会随着你水平的提高而增加
提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进
历经更大的挑战。随着你的成长,各种影响力也会提高。
mongdb在linux下的安装
xtuhcy
mongodb linux
一、查询linux版本号:
lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noa