5 ms·
>However, 200 (success) is simply wrong. What makes it wrong? HTTP/HTTPS URLs/URIs don't mean files on the disk. You can return 200 as a default if you like.
by wang_li 3y ago
>However, 200 (success) is simply wrong.
What makes it wrong? HTTP/HTTPS URLs/URIs don't mean files on the disk. You can return 200 as a default if you like.
- shkkmo 3y agoReturning a 200 response for a resource that doesn't exist is wrong. The correct response code would be a 3XX or 4XX response code, depending on the client behavior that you want. In this specific case, a 303 response that redirects to the homepage would be most correct. Alternatively, you could return a 404 response alongside the default content.
- phlakaton 3y agoAnd how do you know the resource doesn't exist in this case? The server says it does. The point is, "resource" is an abstraction that servers may implement as they wish. The only requirements, per HTTP, is that (1) it's something that can be identified with a URI (satisfied in this case), and (2) it has information associated with it that can be retrieved and/or managed via the HTTP protocol (satisfied in this case). We might imagine that the set of resources should be finite, or strictly mapped to extant data records in our system – but these are not requirements.
- shkkmo 3y ago> We might imagine that the set of resources should be finite, or strictly mapped to extant data records in our system – but these are not requirements. Clearly they aren't requirements as I can think of many valid use cases that violate them. To me, creating an infinite number of identical aliases for a single resource is clearly wrong. The only reason to do it is either incompetence or laziness.
- cellularmitosis 3y agoWe can argue about the semantics of "wrong" all day, but the lesson here is that not following standards and conventions creates extra work for everyone downstream.
- moring 3y agoThey followed the standard though. They returned 200 for a resource that exists. Many responses here seem to be based on the misunderstanding that this is about "not following a standard is sometimes okay-ish", when it's actually about the fact that the standard does not rigorously define what a "resource" is and what it means for the resource to "exist", other than a circular definition based on status codes.
- cellularmitosis 3y agoServing an identical resource at all possible paths is no one's idea of following established conventions. That's what redirects are for.
- phlakaton 3y agoIs it an identical resource? How do you know? But let's say they are identical. Where in the HTTP spec does it say identical resources may not be served at different endpoints? Nowhere, of course. You talk about violating conventions and standards. The conventions are defined by the HTTP spec. The standard is the HTTP spec. Neither are, so far as I can tell, being violated here.
- pravus 3y agoURLs refer to resources, not files.
- eddythompson80 3y ago> depending on the client behavior that you want. What if you want to confuse the client?
- tremon 3y agoReturning a 200 response for a resource that doesn't exist is wrong Isn't that just begging the question? What defines whether a resource exists? Is it the client's knowledge about the webserver backend configuration, or the server's? If a server returns a 200 response, the resource exists, by definition. It may or may not have data, but again, that's not up to the client to decide. If the server says the resource exists and has no data, then that's the authoritative answer.
- toast0 3y ago> The correct response code would be a 3XX or 4XX response code, depending on the client behavior that you want. If the client behavior you want is to display your styled error page, that has historically meant returning a 200 status code, because some user-agents prefer their own error displays.
- dekhn 3y agoI had to look this up recently, but Tim Berners Lee specifically said that URIs should be treated more or less identically to files on disk. That would mean that accessing a web server that is hosting a static directory should return not found for missing files. But this was just a guideline and it was never followed in practice.
- lifeonlars 3y agoHow the web works has changed quite a lot since the early 1990s though.
- mock-possum 3y agoRFC 9110 - https://httpwg.org/specs/rfc9110.html#overview.of.status.codes https://httpwg.org/specs/rfc9110.html#overview.of.status.cod... It’s like saying “what makes it wrong to signal left but turn right?” It makes the component you’re operating behave less predictably, resulting in a less stable system overall. Follow the spec.
- moring 3y agoThey followed the spec though. They returned 200 for a resource that exists. > It’s like saying “what makes it wrong to signal left but turn right?” No, it's not like that. Signalling left but turning right would be like returning a 200 for a resource that does not exist.