• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gearh
V2EX  ›  程序员

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

  •  1
     
  •   gearh · Jul 25, 2016 · 8914 views
    This topic created in 3755 days ago, the information mentioned may be changed or developed.
    今天看一个 web 框架的官方 demo 里
    数据验证失败的时候回返回 status code 422
    所以我在想有没有必要完全按照 html status code 的定义返回
    80 replies  •  2016-07-30 19:17:37 +08:00
    Kirscheis
    Kirscheis
    Jul 25, 2016 via Android❤️1
    1
    403 和 451 啊。。 status code 是方便你自己的应用使用的,内部文档说明白就可以了。像搭在暗网上的很多 web 服务器为了防普通爬虫 200 全部换成 50x 和 40x
    jixiangqd
    jixiangqd
    Jul 25, 2016
    2
    202
    jarlyyn
    jarlyyn
    Jul 25, 2016
    3
    200,401,403,404
    alex321
    alex321
    Jul 25, 2016
    4
    204 & 304
    ladyv2
    ladyv2
    Jul 25, 2016
    5
    302 404 444
    TingHaiJamiE
    TingHaiJamiE
    Jul 25, 2016
    6
    @Kirscheis 可以围观一下你返回 451 的么...
    former
    former
    Jul 25, 2016
    7
    304 和 404
    julyclyde
    julyclyde
    Jul 25, 2016
    8
    429
    lslqtz
    lslqtz
    Jul 25, 2016❤️1
    9
    233
    ZE3kr
    ZE3kr
    Jul 25, 2016 via iPhone❤️2
    10
    204 ,作为统计,比 200 返回一个 1px 的 gif 省一点流量

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

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

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

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

    else:
    pass
    seeker
    seeker
    Jul 26, 2016
    65
    强迫症表示必须严格按照 rfc 返回值。
    AbrahamGreyson
    AbrahamGreyson
    Jul 26, 2016
    66
    其它的都是程序自动 throw 的。
    jyf007
    jyf007
    Jul 26, 2016 via Android
    67
    在某司前端边上干活,记得是 404 会被运营商劫持
    lslqtz
    lslqtz
    Jul 26, 2016
    68
    @jyf007 在我们这 5**系列也会。。
    Symars
    Symars
    Jul 26, 2016 via iPhone
    69
    500
    spikeLIN
    spikeLIN
    Jul 26, 2016 via iPhone
    70
    @Kirscheis 那用户怎么访问啊
    mgna17
    mgna17
    Jul 26, 2016 via Android
    71
    423 locked😁
    yalay
    yalay
    Jul 26, 2016
    72
    304 是很有用的啊,省带宽啊。
    gevin
    gevin
    Jul 26, 2016❤️3
    73
    如果是写 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
    lslqtz
    Jul 26, 2016
    74
    @gevin Good !
    ppwangs
    ppwangs
    Jul 26, 2016
    75
    @gevin 推荐
    状态码对 restful 很有用。
    gearh
    gearh
    OP
    Jul 26, 2016
    76
    感觉论坛的口风和一年前有点不一样啊
    https://www.v2ex.com/t/191534
    pathbox
    pathbox
    Jul 26, 2016
    77
    666
    timothyqiu
    timothyqiu
    Jul 27, 2016❤️1
    78
    会啊,常用的:

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

    服务器按照语义返回。客户端一般可以按照百位处理,业务逻辑需要时才针对特定的状态码做处理。
    FinnBai
    FinnBai
    Jul 27, 2016
    79
    @gevin @timothyqiu
    学到了!
    chinvo
    chinvo
    Jul 30, 2016
    80
    @just4test 只判断一次 HttpException 就好,然后判断具体错误码。在前端或者 app 里面把后端逻辑报错当作异常来处理就好。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2830 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 221ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    ♥ Do have faith in what you're doing.