【问题标题】:Should non-2xx status code responses include CORS specific headers非 2xx 状态代码响应是否应包含 CORS 特定标头
【发布时间】:2016-12-18 20:14:31
【问题描述】:

非 2XX 状态代码响应是否仍应包含 CORS 特定标头,例如 Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Max-Age?这对客户来说是否有意义?

例如:

➜  api git:(master) ✗ curl -i http://127.0.0.1:9000/dfas
HTTP/1.1 404 Not Found
Connection: close
Server: Node.js v6.3.1
Cache-Control: no-cache, no-store
Access-Control-Max-Age: 300
Access-Control-Allow-Origin: *
Content-Type: application/json
Content-Length: 60
Date: Thu, 11 Aug 2016 22:58:33 GMT

{"code":"ResourceNotFound","message":"/dfas does not exist"}

【问题讨论】:

    标签: http cors http-status-codes access-control


    【解决方案1】:

    是的,即使是非 2xx 响应,让服务器发送 CORS 标头也是有意义的。原因是响应中没有 CORS 标头,非 2xx 响应代码不会暴露给 JavaScript 客户端(通过 Fetch 或 XHR)。响应代码可能会显示在 devtools 控制台中,但 如果没有 CORS 标头,客户端 JavaScript 将能够以编程方式确定的唯一一件事是发生了错误,而不是错误的响应代码。

    因此,如果您希望 JavaScript 客户端能够根据响应代码进行有用的错误处理,那么即使在非 2xx 响应中,服务器也应该发送 CORS 标头。

    【讨论】:

    • 谢谢,我也是这么想的。
    • 是的,sideshowbarker 有正确的答案。 CORS 只是一种告诉浏览器共享响应是安全的方法。共享错误响应对于调试非常有用。如果您不使用 CORS,则相当于服务器只是关闭连接。
    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 2018-07-07
    • 2015-08-23
    • 2017-07-11
    • 1970-01-01
    • 2018-02-13
    • 2015-06-08
    • 2019-05-21
    相关资源
    最近更新 更多