首先要明白的是axios是什么:axios是基于promise(诺言)用于浏览器和node.js是http客户端。 axios的作用是什么呢:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能。 特点:支持浏览器和node.js 支持promise 能拦截请求和响应 能转换请求和响应数据 能取消请求 自动转换JSON数据 浏览器支持防止CSRF(跨站请求伪造) 这里你一定会想promise是什么东西,以下是promise的个人理解: promise是什么:是一个对象用来传递异步操作的信息,它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的api,可供进一步的处理。 promise的作用:Promise的出现主要是解决地狱回调的问题,比如你需要结果需要请求很多个接口,这些接口的参数需要另外那个的接口返回的数据作为依赖,这样就需要我们一层嵌套一层,但是有了Promise 我们就无需嵌套。 promise的本质是什么:分离异步数据获取和业务 基本使用方法: axios执行GET请求 GET 请求方法 执行POST请求 POST请求方法 执行多个并发请求 多个并发请求 get和post都是基于promise的所以写法上很相似,是用then和catch,使用这种方法来进行发送请求。 还有一个axios重要的知识点就是拦截器 拦截器 在请求或响应被 then 或 catch 处理前拦截它们(拦截器可以做什么:在请求或者响应时拦截下来进行处理) 拦截器分为请求拦截器和响应拦截器 请求拦截器(interceptors.requst)是指可以拦截每次或指定HTTP请求,并可修改配置项。 响应拦截器(interceptors.response)可以在每次HTTP请求后拦截住每次或指定HTTP请求,并可修改返回结果项。 拦截器的写法 拦截器的工作流程: 拦截器工作流程 移除拦截器 移除拦截器 自定义 axios 实例添加拦截器 添加拦截器 取消 使用 cancel token 取消请求 可以使用 CancelToken.source 工厂方法创建 cancel token 参考资料:axios中文文档 from:https://www.jianshu.com/p/13cf01cdb81f
View Details个人外贸企业需要访问国外的网络,怎么办?如果您想尝试建立您自己的 VPN,但是不确定从哪里开始,那么您来对地方了,我将比较 6 个在您自己的服务器上搭建和使用 VPN 的最好的自由和开源工具。不管您是想为您的企业建立站点到站点的 VPN,还是只是想创建一个远程代理访问以解除访问限制并对 ISP 隐藏你的互联网流量,都可以通过 VPN 来达成。 根据您的需求和条件,并参考您自己的技术特长、环境以及您想要通过 VPN 实现的目标。需要考虑以下因素: •VPN 协议 •客户端的数量和设备类型 •服务端的兼容性 •需要的技术专业能力 Algo Algo 是从下往上设计的,可以为需要互联网安全代理的商务旅客创建 VPN 专用网。它“只包括您所需要的最小化的软件”,这意味着为了简单而牺牲了可扩展性。Algo 是基于 StrongSwan 的,但是删除了所有您不需要的东西,这有另外一个好处,那就是去除了新手可能不会注意到的安全漏洞。 作为额外的奖励,它甚至可以屏蔽广告! Algo 只支持 IKEv2 协议和 Wireguard。因为对 IKEv2 的支持现在已经内置在大多数设备中,所以它不需要像 OpenVPN 这样的客户端应用程序。Algo 可以使用 Ansible 在 Ubuntu (首选选项)、Windows、RedHat、CentOS 和 FreeBSD 上部署。 使用 Ansible 可以自动化安装,它会根据您对一组简短的问题的回答来配置服务。卸载和重新部署也非常容易。 Algo 可能是在本文中安装和部署最简单和最快的 VPN。它非常简洁,考虑周全。如果您不需要其他工具提供的高级功能,只需要一个安全代理,这是一个很好的选择。请注意,Algo 明确表示,它不是为了解除地理封锁或逃避审查,主要是为了加密。 Streisand Streisand 可以使用一个命令安装在任何 Ubuntu 16.04 服务器上;这个过程大约需要 10 分钟。它支持 L2TP、OpenConnect、OpenSSH、OpenVPN、Shadowsocks、Stunnel、Tor bridge 和 WireGuard。根据您选择的协议,您可能需要安装客户端应用程序。 在很多方面,Streisand 与 Algo 相似,但是它提供了更多的协议和定制。这需要更多的工作来管理和维护,但也更加灵活。注意 Streisand 不支持 IKEv2。因为它的多功能性,我认为 Streisand 在某国和土耳其这样的地方绕过审查制度更有效,但是 Algo 的安装更容易和更快。 使用 Ansible 可以自动化安装,所以不需要太多的专业技术知识。通过向用户发送自定义生成的连接指令,包括服务器 SSL 证书的嵌入副本,可以轻松添加更多用户。 卸载 Streisand 是一个快速无痛的过程,您也可以随时重新部署。 OpenVPN OpenVPN 要求客户端和服务器应用程序使用其同名的协议建立 VPN 连接。OpenVPN […]
View Detailsphp7.1以上. mcrypt_generic_open is deprecated 这个错误, 就是因为mcrypt扩展,在php7.1以上被废弃,服务器不设置报错等级的话, 这个错误会被框架拦截,然后报出微信demo里的40007错误, 具体解决方案,所有 mcrypt扩展的代码,全部加上 错误抑制符 ,例如 //使用BASE64对需要解密的字符串进行解码 原来的代码
1 2 3 4 5 6 7 8 9 10 |
//使用BASE64对需要解密的字符串进行解码 $ciphertext_dec = base64_decode($encrypted); $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv = substr($this->key, 0, 16); mcrypt_generic_init($module, $this->key, $iv); //解密 $decrypted = mdecrypt_generic($module, $ciphertext_dec); mcrypt_generic_deinit($module); mcrypt_module_close($module); |
修改的代码
1 2 3 4 5 6 7 8 9 10 |
//使用BASE64对需要解密的字符串进行解码 $ciphertext_dec = base64_decode($encrypted); @$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv = substr($this->key, 0, 16); @mcrypt_generic_init($module, $this->key, $iv); //解密 @$decrypted = mdecrypt_generic($module, $ciphertext_dec); @mcrypt_generic_deinit($module); @mcrypt_module_close($module); |
然后我的问题就解决了。 我的问题主要出在微信的加解密函数上,遇到的坑有几个 1.文档给的class默认有的是小写, 2.一个文件有多个class得拆开 3.构造函数获取的变量名称不对得修改… 这些用断点调试都可以进行解决 还有一种方案是, 我听我朋友说可以用 openssl代替mcrypt扩展的方案(mcrypt编码,openssl解码), 得重写编写微信demo里的代码,虽然我没成功… from:https://blog.csdn.net/qq_38686693/article/details/81388329
View Details页面之间的跳转传参,正常前端js里写 window.location.href="xxxxx?id=1" 就可以了; 但是vue不一样 需要操作的是路由history,需要用到 VueRouter, 示例: 常用的场景是:列表页点击“查看”按钮,跳转到详情页。 在列表页(list.vue)按钮点击事件里写上
1 2 3 4 |
<span class="token function">detail</span><span class="token punctuation">(</span>row<span class="token punctuation">)</span> <span class="token punctuation">{</span> this<span class="token punctuation">.</span>$router<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">"detail"</span><span class="token punctuation">,</span> query<span class="token punctuation">:</span> <span class="token punctuation">{</span> id<span class="token punctuation">:</span> row<span class="token punctuation">.</span>id <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> |
运行时浏览器地址栏展示: http://localhost:8080/#/orders/detail?id=31 在详情页(detail.vue)里写上
1 2 |
<span class="token keyword">let</span> id <span class="token operator">=</span> <span class="token function">Number</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>$route<span class="token punctuation">.</span>query<span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span> |
即可获取到参数id了。 解析 先看看 route是什么,在vscode f12后 看到
1 2 3 4 5 6 7 |
<span class="token keyword">declare</span> module <span class="token double-quoted-string string">"vue/types/vue"</span> <span class="token punctuation">{</span> <span class="token keyword">interface</span> <span class="token class-name">Vue</span> <span class="token punctuation">{</span> <span class="token variable">$router</span><span class="token punctuation">:</span> VueRouter<span class="token punctuation">;</span> <span class="token variable">$route</span><span class="token punctuation">:</span> Route<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。 VueRouter官网 传送门 route是一个跳转的路由对象,每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name,path,params,query等 其中 params {}对象,包含路由中的动态片段和全匹配片段的键值对 用来实现 /order.detail/1 query {}对象,包含路由中查询参数的键值对。 用来实现 /order/detail?id=1 from:https://www.jianshu.com/p/45163cb031be
View Details参考地址:http://blog.csdn.net/sanbingyutuoniao123/article/details/71124655 关于“SSL证书问题:无法获取本地颁发者证书”错误。很明显,这适用于发送CURL请求的系统(并且没有服务器接收请求) 1)从https://curl.haxx.se/ca/cacert.pem下载最新的cacert.pem 2)将以下行添加到php.ini(如果这是共享托管,并且您无法访问php.ini,那么可以在public_html中添加到.user.ini) curl.cainfo=/path/to/downloaded/cacert.pem from:https://www.cnblogs.com/haoxuanchen2014/p/8067484.html
View Details