标签:与标准不符会有哪些后果
公司有部分业务采用的是PHP,框架采用的是国人开发的ThinkPHP,由于业务简单,以前是直接暴露Apache给用户,但是现在考虑到性能以及其他的一些因素,所以直接在前面加上nginx,这样既不会影响老业务,也不需要重新捣鼓原来的配置。
问题发生在一个APP页面访问时,直接把这串URL放到浏览器里面返回的状态码是200,但是通过APP访问的时候返回的状态码是404。我就纳闷了,同样的网络怎么会有不同的响应呢。于是打开Fiddler,手机连接到Fiddler上,返回状态码的确是404。更加疑惑,后来才发现,我在浏览器里面测试的这个页面是需要通过header参数进行认证的,浏览器里面没法直接设置header,所以返回的页面上的内容一直是未认证,但是状态码是200。当使用APP访问的时候,APP携带了header进行访问,所以第一步顺利通过,在进行第二步验证header的时候,由于PHP没有安装memcache扩展,所以出现了直接出现报错页面,但该报错页面的状态码是404(用Fiddler只是看了下状态码,并没有看返回页面的具体内容,太粗心了,导致一直以为是找不到页面)。
从此事件看出,
(1)现在提供给APP的接口都是返回json内容,即时出现认证未通过,HTTP status code 依然是200,只是通过返回的内容里的状态码来状态码,是否可应考虑在后期对业务状态码和错误状态进行结合呢
(2)框架不应该在错误页面返回404状态码,很容易让人误解。
(3)自己太粗心,流程没有走完就开始找线上的问题了。