HTTP

POST提交数据的方式

最近第一次使用vuejs做前端,用axios库来做表单的提交,结果发现php后台的$_POST是一个空数组,无法获取提交过来的数据。 查了一下,发现这个前端POST提交数据的方式有关。 1. 默认的application/x-www-form-urlencoded方式 使用html原生的<form>标签,并且不设置enctype属性,那么表单数据就会默认以application/x-www-form-urlencoded方式提交。 <form action="doAction.php" method="post"> 名字: <input type="text" name="fname"> <input type="submit" value="提交"> </form> 这时候可以看一下请求头的Content-Type: 这样,在php后台使用$_POST就能得到用户提交的表单数据。echo $_POST[‘fname’]; 另外如果使用传统jquery的$.ajax来提交form表单,默认也是以application/x-www-form-urlencoded方式来提交,所以使用$.ajax时候经常要将表单变量$(“#form_name”)序列化(serilize) […]

nginx配置根域名重定向到www.域名

现在用户在输入url访问网站的时候通常不会再去敲http://www这样的前缀,而习惯直接敲域名。http会由浏览器自动添加,但www就必须由站长们来配置了。 首先需要在dns解析上配置对根域名的域名解析: 然后修改nginx的配置: # 301 redirect non-www to www server{ server_name hawu.me; return 301 $scheme://www.$host$request_uri; # return 301 等效于下面这句 #

squid + stunnel >> 跨越长城,科学上网!

在上一篇文章《使用squid搭建代理服务器》里,我们知道单单使用墙外的squid代理是不可能实现翻墙的,因为墙内主机到墙外squid之间发送的请求会被GFW监控到。即使是https,报文正文虽然是加密的,但报头是不加密的,依然会被GFW墙掉。 既然如此,如果我们从墙内到墙外squid之间的数据包是加密过的,那不就可以瞒过GFW了?这就需要用到stunnel! Stunnel 是一个自由的跨平台软件,用于提供全局的TLS/SSL服务。针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连 接。该软件可在许多操作系统下运行,包括Unix-like系统,以及Windows。Stunnel依赖于某个独立的库,如OpenSSL或者 SSLeay,以实现TLS或SSL协议。 ——百度百科 ps:除了stunnel外,比较有名的开源隧道软件还包括:由代理软件varnish-cache的母公司提供的hitch(前身是stud),国内VPN厂商曲径提供的qtunnel 一、squid + stunnel 翻墙大法 squid+stunnel翻墙大法的原理如下图: 用户将tcp包发给stunnel client;stunnel client将包加密,发送给stunnel server;stunnel server解密后发送给squid;squid将包中的http请求进行转发,然后再将请求结果返回给stunnel server;stunnel server加密发给stunnel

使用squid搭建代理服务器

squid是一款高效的http代理服务器程序,而且更经常被用来做缓存服务器。官网:http://www.squid-cache.org;还有一位大牛翻译的squid中文权威指南。 一、安装squid 我的安装环境:Ubuntu 14.04.2 LTS sudo apt-get install squid3 可以使用squid3 -v 检查安装好的squid 二、squid配置 squid默认配置文件为/etc/squid/squid.conf 2.1 基本配置 # http_port 设置监听端口,默认为3128 http_port

关于http代理与端口扫描

写爬虫总会有用到http代理的时候,通常的做法都是直接去代理网站(比如快代理,米扑代理)找代理ip来用,但是这些http代理的原理是什么?代理网站是怎么扫描到这么多代理ip的?这两个问题一直困扰着我,可能以前也查过相关资料,但没记住=。=# 今天还是把这个记下来吧,好记性不如烂笔头不是嘛。 一、http代理原理 参考:https://imququ.com/post/web-proxy.html python实现简单的http代理:https://github.com/abhinavsingh/proxy.py 著名的开源http代理程序有:squid、harproxy、varnish。关于squid的用法可以参考我的下一篇文章《使用squid搭建代理服务器》 从知乎上摘抄了一份对比图,对比了这些开源代理的特性,可以了解一下。 二、端口扫描 代理网站如何扫描到那些可用的代理ip,最直接的方法就是使用暴力穷举: 扫描所有ipv4公网地址(ipv4地址数量有255*255*255*255大概42亿个,其中公网ip大概占20多亿个); 对每个公网ip进行端口扫描(最常用的是TCP SYN扫描),确认该ip下有哪些端口号对外开放(一台主机的端口数量是65535个); 然后再对这几个端口分别进行http代理测试,确认是否可用。 端口扫描的原理其实就是对该[ip: port]尝试进行TCP三次握手,参考:http://zenoh.iteye.com/blog/1264915 下面是一段python实现的最简单的端口扫描脚本: #!/usr/bin/env python from socket

nginx为网页开启gzip压缩

今天准备写汤圆网的app后台接口时,观摩了一下api.huaban.com的返回。发现人家的http响应头中有个值: Content-Encoding:”gzip” 看起来略屌对不对,我才知道原来http响应可以在先服务器端进行gzip压缩,然后传输,最后由浏览器自动解压!这样既能加速传输效率、又降低带宽占用。对于我这种带宽渣渣的小个体户,简直就是天降福音。 (sorry,以上都是废话) nginx关于gzip压缩模块的官方配置文档:http://nginx.org/en/docs/http/ngx_http_gzip_module.html   1. 打开nginx的配置文件 nginx.conf   2. 在http花括号里可以看到gzip功能被注释掉了: #gzip  on;   3. 取消注释,开启gzip压缩,并添加如下配置: gzip on; gzip_comp_level

Scroll to Top