非2xx状态代码响应是否应包含特定于CORS的标头

时间:2016-08-11 23:03:01

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

非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"}

1 个答案:

答案 0 :(得分:4)

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

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