又被内部 API 给坑了! - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kxxoling

又被内部 API 给坑了!

  •  
  •   kxxoling
    kxxoling Mar 9, 2015 5971 views
    This topic created in 4106 days ago, the information mentioned may be changed or developed.

    调用后台错误的时候遇到一个 403 问题,但是由于返回头是 200,一直隐藏在了数十个 CSS、JS 文件当中!(不要问我为什么说又……

    API 提供正确的 HTTP 头不是基本要求吗?

    25 replies    2015-03-09 20:36:41 +08:00
    kslr
        1
    /div> kslr  
       Mar 9, 2015 via Android   1
    restful api, http api
    learnshare
        2
    learnshare  
       Mar 9, 2015   2
    写 API 的兴许状态码都不懂,就知道 200
    airyland
        3
    airyland  
       Mar 9, 2015   1
    顺便吐槽一下,很多统计服务或者广告联盟的MIME Type都是不正确的。吐槽已久,问能不能改一下,回:腾讯它们不也是这样返回的?
    halfcrazy
        4
    halfcrazy  
       Mar 9, 2015   1
    记得好像可以API始终返回200,然后把真正的状态码放到返回值里面
    scys
        5
    scys  
       Mar 9, 2015   1
    @learnshare 我一般写API都是默认返回200,如果是系统错误,就返回50x,如果没有API就返回40x
    业务逻辑 返回值 和HTTP ERROR CODE没有直接关系
    otakustay
        6
    otakustay  
       Mar 9, 2015   1
    你见过非200响应要扣KPI的公司吗,反正我是见过
    pi1ot
        7
    pi1ot  
       Mar 9, 2015   1
    之前听前端工程师说有些浏览器在非200返回时拿不到AJAX调的response
    awanabe
        8
    awanabe  
       Mar 9, 2015   1
    API的HTTP头表明的是api是否可用, 不代表执行正确.
    blacktulip
        9
    blacktulip  
       Mar 9, 2015
    「调用后台错误的时候遇到一个 403 问题,但是由于返回头是 200,一直隐藏在了数十个 CSS、JS 文件当中!(不要问我为什么说又……」
    楼主你前面没有说又
    blacktulip
        10
    blacktulip  
       Mar 9, 2015   1
    好吧找到了,又在题目里。楼主应该写个小 helper ,出问题就把 response 过一次,不要用眼睛去找
    kernel1983
        11
    kernel1983  
       Mar 9, 2015   1
    论全的重要性
    tabris17
        12
    tabris17  
       Mar 9, 2015   1
    @scys 调用参数错误返回4XX没问题
    zhicheng
        13
    zhicheng  
       Mar 9, 2015   1
    那些不遵守 HTTP 规范的,有考虑过写 Client 的人的感受吗?HTTP 的状态码就是给 HTTP 之上的业务使用的,要不然根本就不需要设计这个东西。
    learnshare
        14
    learnshare  
       Mar 9, 2015
    HTTP 状态码有它的具体含义,代表特定状态,跟语言、数据库、前后端没关系,更跟 KPI 没关系。
    Viztor
        15
    Viztor  
       Mar 9, 2015
    Some environments (like in-browser Javascript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.

    --Wordpress API Docs
    jarlyyn
        16
    jarlyyn  
       Mar 9, 2015   1
    为什么api请求会返回403......
    既然你有了相应的返回值,那么不就是正确响应,应该是200么?
    就算返回403,难道你不去分析返回的body了么?
    155
        17
    155  
       Mar 9, 2015   2
    部分ISP会劫持非200请求, 剩下的连200都劫.
    dongin
        18
    dongin  
       Mar 9, 2015   1
    有一种坑叫我以为
    jarlyyn
        19
    jarlyyn  
       Mar 9, 2015
    200,301,500这种 状态是http链接本身的状态,应该是记录在服务器日志里,给运维看的。由客户端自动处理的,和缓存状态有关。是容器的状态。

    业务的逻辑是返回的数据,我觉得并在一起才不符合我的审美。
    sophymax
        20
    sophymax  
       Mar 9, 2015   1
    自己的接口为了减少被人乱分析的概率 , 成功的不成功的全部返回404 , 要是在公司这么干不知道领导会不会让我收拾东西走人
    learnshare
        21
    learnshare  
       Mar 9, 2015
    zhicheng
        22
    zhicheng  
       Mar 9, 2015   3
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    10.1 Informational 1xx
    10.2 Successful 2xx
    10.3 Redirection 3xx
    10.4 Client Error 4xx
    10.5 Server Error 5xx

    本来想说点儿啥的,想想还是不说了,自己看吧。
    iyaozhen
        23
    iyaozhen  
       Mar 9, 2015   1
    我感觉api的HTTP CODE直接交给路由本身来处理更加合适吧,通了就是200,服务器错误就是5XX。
    业务返回码自己在返回值里面定义。
    kxxoling
        24
    kxxoling  
    OP
       Mar 9, 2015
    @jarlyyn 虽然没找到原因,但是调试后台程序的时候发现问题出在 token 校验失败,如果我没理解错的话就应该返回 403.
    @iyaozhen 5xx 是正常的。
    @155 这种情况我没考虑到。。。
    tczzjin
        25
    tczzjin  
       Mar 9, 2015   1
    如果是wap页面又返回非200状态码的话,移动电信会劫持这个返回,之后再也不调用这个接口了
    About     Help     Advertise     Blog     API     FAQ     Solana     886 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 65ms UTC 20:26 PVG 04:26 LAX 13:26 JFK 16:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86