新浪微博面试php,php面试准备 - anyeshe的个人页面 - OSCHINA - 中文开源技术交流社区...

php周边技术有点多,每个人关注和遇到的点都不一样,有时候面试经常碰到面试官问的知识点之前没接触过或者了解的不多,直接被pass。虽然挺讨厌这样以偏概全,但是没办法只能多从自身找问题,于是把历次面试遇到的还有听到的都写在这里留个记录。(ps:没有顺序)

------------------------------------------------------------------------------

websocket

http协议是典型的 请求响应 模式,要是服务端想主动联系客户端那基本是没办法的,记得最开始网站上有那种新消息提醒的功能,都是ajax轮询的去做,这种既耗资源,对服务器压力也很大。

websocket出现就解决了这个问题,客户端和服务端建立连接后谁都可以主动给对方发送消息。当然它也是建立在tcp之上,与http的兼容性也很好(端口也是80,443,握手使用http),可以发送文本和二进制,而且是没有同源的限制。协议名称 ws 、wss

客户端:

GET /you/websocket/ HTTP/1.1

Host: localhost

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: acDE8ImOPfgJNRINxcclLi==

Sec-WebSocket-Protocol: chat, superchat

Origin: http://localhost.lo

Sec-WebSocket-Version: 13

Upgrade:websocket  参数说明这是 WebSocket 类型请求

Connection: Upgrade

上面这俩是核心,告诉服务器发起的是websocket连接

Sec-WebSocket-Key  参数是 WebSocket 客户端发送的一个 base64 编码的密文,浏览器随机生成的,要求服务端必须返回一个对应加密的Sec-WebSocket-Accept应答

Sec-WebSocket-Protocol: chat, superchat 是一个用户定义的字符串,用来区分同URL下,不同的服务所需要的协议

服务端

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: dGhlIHNhbXBsZSBub25jZQ=

Sec-WebSocket-Protocol: chat

握手完事后就可以交互了。

防盗链

盗链就是比如你网站上有一个图片,完后别人网站直接引用你的图片,对你来说一是访问别人网站的流量有一部分压到你这儿了,而且还没给你带来什么好处。 这种行为当然要禁止,这就是防盗链,有防盗链就有反防盗链,互相掐。

别人引用我们的图片,这会产生一个http 的 get 请求,浏览器会自动为我们带上一个头(Referer),标识来源。Referer是HTTP Header的一部分,当浏览器向网站Web服务器发送请求的时候,一般会带上Referer,告诉服务器此次请求是从哪个页面链接过来的。

跨域

jsonp

JSON with Padding 的缩写,就是 script 标签不受同源策略的限制,服务端返回一个函数的调用代码,把数据传到参数中。

服务端返回

parseResponse({"Name": "Cheeso", "Id" : 1823, "Rank": 7})

cors

跨域资源共享,需要客户端和服务端同时支持,如果发现请求是跨域,就会自己加一个头,不需要用户干预

GET /news/notice HTTP/1.1

Host: s.def.com

Connection: keep-alive

Accept: application/json, text/plain, */*

Origin: https://www.abc.com

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36

Client-Lang: zh-CN

Referer: https://www.abc.com/documentary

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4

Origin 表示请求来自那。如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。

HTTP/1.1 200 OK

Server: nginx/1.10.2

Date: Tue, 26 Sep 2017 01:23:00 GMT

Content-Type: application/json; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

Vary: Accept-Encoding

X-Powered-By: PHP/7.1.0

Access-Control-Allow-Origin: https://www.abc.com

Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,Client-Lang,Client-Source

Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE

PS: 1

Content-Encoding: gzip

如果来源是在允许的列表中,响应头中就会包含 Access-Control-Allow-Origin

如果请求头中  Content-Type :application/json 或者非 get 、post 还会多一次 option 请求,用来确认来源是否在允许范围内,以及支持的动作。得到确认后才会进行后续请求。

OPTIONS /star/top-ranks?expand=copyStatus HTTP/1.1

Host: s.abc.com

Connection: keep-alive

Access-Control-Request-Method: GET

Origin: https://www.ubankfx.com

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36

Access-Control-Request-Headers: client-lang

Accept: */*

Referer: https://www.abc.com/documentary

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4

服务器收到请求以后,检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后,确认允许跨源请求,并响应。

HTTP/1.1 204 No Content

Server: nginx/1.10.2

Date: Tue, 26 Sep 2017 01:23:00 GMT

Connection: keep-alive

Access-Control-Allow-Origin: https://www.abc.com

Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,Client-Lang,Client-Source

Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE

Access-Control-Max-Age: 1728000

Access-Control-Allow-Origin  表示可以跨域,*号表示允许任意源跨域。如果返回头中不包括 cors相关的头信息表示不允许。

http

redis

memcache

mongodb

单点登录

压测

php新特性

框架之间的区别

算法

安全

设计模式

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值