除了 200 和 404 你们还会主动返回其他的 html status code 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gearh
V2EX    程序员

除了 200 和 404 你们还会主动返回其他的 html status code 吗

  •  1
     
  •   gearh 2016-07-25 10:56:57 +08:00 7997 次点击
    这是一个创建于 3370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天看一个 web 框架的官方 demo 里
    数据验证失败的时候回返回 status code 422
    所以我在想有没有必要完全按照 html status code 的定义返回
    80 条回复    2016-07-30 19:17:37 +08:00
    Kirscheis
        1
    Kirscheis  
       2016-07-25 11:03:56 +08:00 via Android   1
    403 和 451 啊。。 status code 是方便你自己的应用使用的,内部文档说明白就可以了。像搭在暗网上的很多 web 服务器为了防普通爬虫 200 全部换成 50x 和 40x
    jixiangqd
        2
    jixiangqd  
       2016-07-25 11:05:55 +08:00
    202
    jarlyyn
        3
    jarlyyn  
       2016-07-25 11:12:29 +08:00
    200,401,403,404
    alex321
        4
    alex321  
       2016-07-25 11:27:49 +08:00
    204 & 304
    ladyv2
        5
    ladyv2  
       2016-07-25 11:33:59 +08:00
    302 404 444
    TingHaiJamiE
        6
    TingHaiJamiE  
       2016-07-25 11:34:52 +08:00
    @Kirscheis 可以围观一下你返回 451 的么...
    former
        7
    former  
       2016-07-25 11:35:14 +08:00
    304 和 404
    julyclyde
        8
    julyclyde  
       2016-07-25 11:36:10 +08:00
    429
    lslqtz
        9
    lslqtz  
       2016-07-25 11:36:21 +08:00   1
    233
    ZE3kr
        10
    ZE3kr  
       2016-07-25 11:45:57 +08:00 via iPhone   2
    204 ,作为统计,比 200 返回一个 1px 的 gif 省一点流量

    451 ,用来屏蔽某国,被我实际应用:
    https://ooo.0o0.ooo/2016/07/24/57958c3001953.jpeg
    czheo
        11
    czheo  
       2016-07-25 11:46:21 +08:00   3
    没有人吐槽 html status code 吗?
    SuperFashi
        12
    SuperFashi  
       2016-07-25 11:46:28 +08:00 via Android
    204 和 451
    楼上的 233 什么鬼 hhh
    SuperFashi
        13
    SuperFashi  
       2016-07-25 11:46:48 +08:00 via Android
    @ZE3kr 竟然被你抢了
    jugelizi
        14
    jugelizi  
       2016-07-25 11:47:24 +08:00
    419
    techmoe
        15
    techmoe  
       2016-07-25 11:48:54 +08:00 via Android
    301 302 500
    有的时候 500 不是自己希望返回的,曾经有一个 wp 站,不知道 wordpress 内部怎么实现的,好像捕获到 error 就自动抛 500
    otakustay
        16
    otakustay  
       2016-07-25 11:55:19 +08:00
    @ZE3kr 如果请求是<img>发的,返回 204 在有些版本 firefox 里会控制台报错,因为响应是 image/*却没有 image 的内容
    ZE3kr
        17
    ZE3kr  
       2016-07-25 11:55:55 +08:00 via iPhone
    @techmoe php 编译错误或者是关键错误就会抛 500 。
    Shura
        18
    Shura  
       2016-07-25 11:57:21 +08:00 via Android
    以后可能被广泛使用的 451
    mulog
        19
    mulog  
       2016-07-25 11:57:42 +08:00
    什么是 "html" status code (doge)
    ZE3kr
        20
    ZE3kr  
       2016-07-25 11:58:13 +08:00 via iPhone
    @otakustay 使用 img 场景主要是针对没有 js 支持的情况, 204 确实不适合 img 方式。 img 拿到的数据太少, js 能拿到更多数据,一般用 js 。
    jason19659
        21
    jason19659  
       2016-07-25 12:00:26 +08:00
    10086 12450
    otakustay
        22
    otakustay  
       2016-07-25 12:04:48 +08:00
    @ZE3kr 一般用 img 就是为了发 GET 请求送日志嘛, js 用 ajax 还要撞上跨域……
    yalay
        23
    yalay  
       2016-07-25 12:28:08 +08:00
    @ZE3kr 域名这么牛 ooo.0o0.ooo
    ZE3kr
        24
    ZE3kr  
       2016-07-25 12:29:39 +08:00 via iPhone
    @yalay 这只是个别人的图床,不过确实挺牛。我个人也觉得 ooo 后缀也挺好的
    JJaicmkmy
        25
    JJaicmkmy  
       2016-07-25 12:36:37 +08:00   1
    为什么没人用 418 ?
    gearh
        26
    gearh  
    OP
       2016-07-25 12:53:40 +08:00
    想说 css status code 来着 ,结果打错了
    jarlyyn
        27
    jarlyyn  
       2016-07-25 13:11:41 +08:00
    @gearh
    http status code.....
    hinkal
        28
    hinkal  
       2016-07-25 13:14:39 +08:00
    204
    ThreeBody
        29
    ThreeBody  
       2016-07-25 13:34:30 +08:00 via Android
    会啊,看情况来用
    违规访问 403
    爬虫扫已知漏洞用伪造页面 200 或者 301
    nginx 限制并发和攻击会默认用 503.2
    Yemsheng
        30
    Yemsheng  
       2016-07-25 14:45:09 +08:00
    302, 304, 403, 404
    ChopinWong
        31
    ChopinWong  
       2016-07-25 14:54:22 +08:00
    204
    zeus255
        32
    zeus255  
       2016-07-25 14:58:45 +08:00
    自定义响应码 666
    chinvo
        33
    chinvo  
       2016-07-25 15:02:05 +08:00
    做 API 的时候基本所有 4xx 和 5xx 都用到了……
    tairan2006
        34
    tairan2006  
       2016-07-25 15:59:54 +08:00
    RESTful 的话,大部分都会使用啊。。
    RqPS6rhmP3Nyn3Tm
        35
    RqPS6rhmP3Nyn3Tm  
       2016-07-25 16:10:03 +08:00 via Android
    @lslqtz 求参观 233
    23333
    JZ8ZW193q6W9Awgy
        36
    JZ8ZW193q6W9Awgy  
       2016-07-25 16:24:14 +08:00
    @ZE3kr 这几个蛋的域名好啊
    SvenWong
        37
    SvenWong  
       2016-07-25 17:03:06 +08:00
    难道不是 HTTP status code ?
    kfll
        38
    kfll  
       2016-07-25 17:42:43 +08:00
    (_;经科普,华氏 451 度约等于摄氏 233 度
    griffinqiu
        39
    griffinqiu  
       2016-07-25 17:49:32 +08:00
    200, 204
    301, 302, 304
    400, 401, 403, 404
    500

    居然没有人提到 400 ; ))
    griffinqiu
        40
    griffinqiu  
       2016-07-25 17:52:46 +08:00
    出了 404 以外, 502 应该是普通用户从页面上直接看到的一个状态码了 ; ))
    20
        41
    20  
       2016-07-25 17:55:23 +08:00
    451.
    griffinqiu
        42
    griffinqiu  
       2016-07-25 17:55:43 +08:00   1
    用状态吗作为车牌号不错, 感受下:

    404NF
    2000K
    500ER
    502BG
    wql
        43
    wql  
       2016-07-25 18:11:18 +08:00
    @griffinqiu 451LR
    for Legal Reasons.
    ikaros
        44
    ikaros  
       2016-07-25 18:33:30 +08:00
    500 40x 302 自己常用这几个 200 倒是不常用,逻辑没问题框架自己会给
    griffinqiu
        45
    griffinqiu  
       2016-07-25 18:46:40 +08:00
    @wql 400BD
    Bad Request
    ixiaozhi
        46
    ixiaozhi  
       2016-07-25 18:49:28 +08:00
    418 该泡茶了
    halfblood
        47
    halfblood  
       2016-07-25 19:04:00 +08:00
    403 204 401404 400 302
    hantsy
        48
    hantsy  
       2016-07-25 19:19:57 +08:00
    400 , 401 , 403 , 404 , 407 , 409 , 422
    201 , 200 , 204
    hantsy
        49
    hantsy  
       2016-07-25 19:20:54 +08:00
    @otakustay 204 是 No content ,一般用 PUT , DELETE 方法,没有内容返回的情况。
    hantsy
        50
    hantsy  
       2016-07-25 19:24:18 +08:00
    @gearh 200 GET 方法,返回正确结果的状态。

    这些 HTTP 协议有说明。
    422 是比较新的, Unprocessed Entity ,从字面意义,非常符合数据验证失败的情况,以区别 400 。
    hantsy
        51
    hantsy  
       2016-07-25 19:28:05 +08:00   1
    常用的 HTTP Status CODE : http://www.restapitutorial.com/httpstatuscodes.html
    标星应该一个 API 程序都会用到。
    atpking
        52
    atpking  
       2016-07-25 19:38:53 +08:00
    我们的网站偶尔会返回 451 。。。。。
    g0thic
        53
    g0thic  
       2016-07-25 19:43:34 +08:00
    405
    被墙
    wwek
        54
    wwek  
       2016-07-25 19:50:12 +08:00
    444
    griffinqiu
        55
    griffinqiu  
       2016-07-25 19:56:30 +08:00
    @g0thic 然而并不是.
    just4test
        56
    just4test  
       2016-07-25 20:07:59 +08:00
    @chinvo 这得多少异常判断啊……
    XadillaX
        57
    XadillaX  
       2016-07-25 20:55:56 +08:00
    451
    sfyumi
        58
    sfyumi  
       2016-07-25 21:06:40 +08:00
    居然没有 419 吗?
    kn007
        59
    kn007  
       2016-07-25 21:10:29 +08:00
    返回过 410
    lslqtz
        60
    lslqtz  
       2016-07-25 21:47:20 +08:00
    @SuperFashi
    @BXIA
    http://233.dog/f_66700439.png 这时只好来 233 大法了 在状态码打广告不错 2333333333
    <?php
    header('HTTP/1.1 233 <-> I Want To Fuck Dog~');
    ?>
    lslqtz
        61
    lslqtz  
       2016-07-25 21:54:56 +08:00
    @ixiaozhi 好评,以后参数不正确就发回一个这个 2333
    guodont
        62
    guodont  
       2016-07-25 21:58:51 +08:00 via Android
    201 401
    simple_plan
        63
    simple_plan  
       2016-07-25 22:05:29 +08:00
    400 403
    SlipStupig
        64
    SlipStupig  
       2016-07-25 22:44:44 +08:00
    if( http_code > 400):
    # Raise ERROR

    else:
    pass
    seeker
        65
    seeker  
       2016-07-26 01:11:39 +08:00
    强迫症表示必须严格按照 rfc 返回值。
    AbrahamGreyson
        66
    AbrahamGreyson  
       2016-07-26 03:45:09 +08:00
    其它的都是程序自动 throw 的。
    jyf007
        67
    jyf007  
       2016-07-26 06:13:50 +08:00 via Android
    在某司前端边上干活,记得是 404 会被运营商劫持
    lslqtz
        68
    lslqtz  
       2016-07-26 06:34:14 +08:00
    @jyf007 在我们这 5**系列也会。。
    Symars
        69
    Symars  
       2016-07-26 07:22:12 +08:00 via iPhone
    500
    spikeLIN
        70
    spikeLIN  
       2016-07-26 08:26:51 +08:00 via iPhone
    @Kirscheis 那用户怎么访问啊
    mgna17
        71
    mgna17  
       2016-07-26 08:42:41 +08:00 via Android
    423 locked
    yalay
        72
    yalay  
       2016-07-26 09:11:02 +08:00
    304 是很有用的啊,省带宽啊。
    gevin
        73
    gevin  
       2016-07-26 09:12:29 +08:00   3
    如果是写 RESTful API ,以下情况分别返回这些 status code:

    当 GET, PUT 和 PATCH 请求成功时,要返回对应的数据,及状态码 200 ,即 SUCCESS
    当 POST 创建数据成功时,要返回创建的数据,及状态码 201 ,即 CREATED
    当 DELETE 删除数据成功时,不返回数据,状态码要返回 204 ,即 NO CONTENT
    当 GET 不到数据时,状态码要返回 404 ,即 NOT FOUND
    任何时候,如果请求有问题,如校验请求数据时发现错误,要返回状态码 400 ,即 BAD REQUEST
    当 API 请求需要用户认证时,如果 request 中的认证信息不正确,要返回状态码 401 ,即 NOT AUTHORIZED
    当 API 请求需要验证用户权限时,如果当前用户无相应权限,要返回状态码 403 ,即 FORBIDDEN

    这些是我写博文『 RESTful API 编写指南』时总结的,付个文章链接: http://blog.igevin.info/posts/restful-api-get-started-to-write/
    lslqtz
        74
    lslqtz  
       2016-07-26 09:25:57 +08:00
    @gevin Good !
    ppwangs
        75
    ppwangs  
       2016-07-26 13:49:29 +08:00
    @gevin 推荐
    状态码对 restful 很有用。
    gearh
        76
    gearh  
    OP
       2016-07-26 15:58:12 +08:00
    感觉论坛的口风和一年前有点不一样啊
    t/191534
    pathbox
        77
    pathbox  
       2016-07-26 21:58:27 +08:00
    666
    timothyqiu
        78
    timothyqiu  
       2016-07-27 08:57:00 +08:00   1
    会啊,常用的:

    + 200 成功
    + 201 成功创建( POST 请求)
    + 202 朕知道了(比如成功接受异步请求,请求结果通过另一个接口查看)
    + 204 不用找了,没有响应内容
    + 400 请求格式错误(请求与文档要求不符,比如要求给出的字段没有给出,或者要求给有效 json 但解析出错)
    + 401 身份未知(比如没有给出 Token 或者 Token 过期)
    + 403 该身份无权限访问该资源
    + 404 资源不存在
    + 415 媒体类型不支持(比如要求请求是 application/json ,但请求实际是 text/plain )
    + 422 无法处理(相对于 400 / 415 是请求有硬伤, 422 是请求格式都对,但由于逻辑上不支持而导致的失败)
    + 429 请求过于频繁

    服务器按照语义返回。客户端一般可以按照百位处理,业务逻辑需要时才针对特定的状态码做处理。
    baiyi
        79
    baiyi  
       2016-07-27 09:22:41 +08:00
    @gevin @timothyqiu
    学到了!
    chinvo
        80
    chinvo  
       2016-07-30 19:17:37 +08:00
    @just4test 只判断一次 HttpException 就好,然后判断具体错误码。在前端或者 app 里面把后端逻辑报错当作异常来处理就好。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     885 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:08 PVG 06:08 LAX 15:08 JFK 18:08
    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