Edit: oops, I was wrong. There is an RFC and it's linked from http://www.451unavailable.org/what-is-error-451/
Nginx is totally relevant as many ISPs including our use GNU/Linux boxes running Nginx as a highly performant transparent proxy (there are TPROXY patches for Nginx) to dive into HTTP traffic and do URL filtering (obviously, after initial crude IP-based filtering). Costs less than those fancy Cisco solutions, and it's not like we're willing to spend additional money on something that downgrades the service.
Also, there are cases where actual sites are legally forced to remove resources. Well, not really forced, but it's just a sort request too many sites can't really decline. You either comply and remove a single page (blocking for Russian visitors only seems sufficient), or get blocked on ISP level and since many ISPs (including several giant ones) just blacklist a whole IP address, that means your site becomes completely unavailable.
I hate the censorship but I like the fact you're not gagged and can talk about the fact traffic is being mirrored.
The sad thing is, practically nobody cared about that, for years. The dissatisfaction became visible only when government granted themselves an ability not only sniff on others communications (which is obviously invisible to end user) but also actively censor them.
Non-authorative reference: http://en.wikipedia.org/wiki/SORM#SORM-2
From what I've heard, SORM-2 hardware is a secured 1U *nix-based server (peer was not sure whenever it was BSD or GNU/Linux variant), running some kind of sniffer (probably pcap-based) software with some FSB's in-house tools. They are supposed to be dormant for the most of time, but nobody except FSB knows what they're actually doing (and they don't have to report when they're doing a lawful intercetion).
Think about that! (and submit a patch to support 451 in your favourite web server / framework).
> 10.4.10 409 Conflict
> The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request. The response body SHOULD include enough
> information for the user to recognize the source of the conflict. Ideally, the response entity would include enough information for the user or user agent to fix the problem; however, that might not be possible and is not required.
> Conflicts are most likely to occur in response to a PUT request. For example, if versioning were being used and the entity being PUT included changes to a resource which conflict with those made by an earlier (third-party) request, the server might use the 409 response to indicate that it can't complete the request. In this case, the response entity would likely contain a list of the differences between the two versions in a format defined by the response Content-Type.
My blog post which helped inspire it http://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-ce...
Simultaneously glad and disgusted that there is a campaign around this.
"As a web user I want our ISPs/governments to give us a nice error page so we understand what is going on when they DNS block or seize websites"
Or is it saying:
"As a web-master, when have to take down content due to legal proceedings I want a nice HTTP code to return"
They give example of the first (Virgin Media), but that takes down an entire domain, so it's kind of irrelevant if the correct HTTP code is returned, it's not like that is going to be resolved quickly. 503 would be the correct code here.
The second might be useful to spiders (who might want to back-off spidering so often for a while), but then wouldn't you just want to show your users a 404 with a nice reason why the content has gone.
> but then wouldn't you just want to show your users a 404 with a nice reason why the content has gone.
A 451 with a nice reason why the content was gone is better.
This is a very good way to make people aware of legal blocking, and to make sure that it is adopted.
Allow me to be the first.
Thankfully websites are not flammable.
Somehow seems fitting.
Usually, 5xx means that the client could retry the request at a later time, and have it succeed. 4xx means the client should expect the request to fail forever unless something is changed.
Some HTTP clients (not browsers, but other things) take advantage of this by showing the user an error dialog on a 4xx error, but just retry at a later time on a 5xx error.
A dystopian novel about a world where all books are banned and fire squads roam around to burn them.
On that note it looks like Microsoft have already dibs'd 451 for an Exchange ActiveSync redirect anyway.
- 4xx isn't appropriate as it's not a client error.
- 5xx isn't appropriate because it's not a server error either.
"Response status codes beginning with the digit '5' indicate cases in which the server is aware that it has encountered an error or is otherwise incapable of performing the request."
There's always that quote people chuck around a lot about censorship being an error so the internet routes around it. By that definition the server knows it has errored so it should be a 5xx response.
[Nerdit: Fixed the quote marks]
1) Link works: 200
2) Take down notice arrives
3) Link not found: 404
3) Link not available: 451
The server understood the request, but is refusing to
fulfill it. Authorization will not help and the request
SHOULD NOT be repeated. If the request method was not HEAD
and the server wishes to make public why the request has
not been fulfilled, it SHOULD describe the reason for the
refusal in the entity. If the server does not wish to make
this information available to the client, the status code
404 (Not Found) can be used instead.
"10.4 Client Error 4xx
The 4xx class of status code is intended for cases in which the client seems to have erred. "
The client has not erred by requested a document that exists and which the server can technically provide (separately, the server has not erred by refusing to provide a document to the client which the exists and which access control would allow the client to have, because a government is threatening the server operator in some manner).
The client has erred in requesting a document which the server is legally forbidden to provide to that client. As specified for 403, the server understands the request and refuses to fulfill it.
Admittedly, a hypothetical 6xx Third-Party Interference series of error codes might be useful for these kind of cases (and some instances currently handled by 503.)
> The client has not erred... the server understands the request and refuses to fulfill it.
As I see it, the server is not refusing anything. +1 6xx Third-Party Interference.
Let's just agree to disagree.
The issue is whether anyone else will expect this tag or code and do anything meaningful with it.
Tangentially to your point, that's only true of the 4.x and earlier versions of HTML which are SGML applications, WHATWG HTML / W3C HTML5 is not SGML-based and does not have a DTD.
You mean like this? https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custo...
If you're going to say that it raises censorship awareness - Internet protocols are intended as useful technical standards for programs to communicate, not vehicles for political goals.
What is the technical benefit of failing with a different error code? Is there need for client software to react differently to a 451 and a 403? The status code is not intended for the human user. If we want to raise awareness, than we already have means to do that - a 403 with a descriptive page citing the reasons. Many websites already do that when complying to DMCA takedowns.
curl -I http://lurkmore.to/Конопля
Still, imho, 4XX could be a response for a given URL, but when "a website is blocked" (from the text of the previous URL), we should go to 5XX, as in 503 - service unavailable.
Consider for example the blocking of sites in the UK, or the blocking of the PirateBay website in the Netherlands. Those are all very limited audiences where the location of the client is causing a legal reason why the content can not be displayed.
Messages to their volunteer address get a vacation message that they're away until September 1st.
Not sure placeing the onus of censorship into the hands of the host and not the goverment with there IP/DNS blocks or however they impose such blocks (China has a nice firewall for outside China sites and I dare to think of how they block a website inside China though can bet it is just as effective).
That all said the posiblility to volantarly do the blocking in a way that the powers that be will accept and with that allow there country's owners to see parts of yoru site that are legal and not the illegal parts for them. Well that would possibily have uses and opens your site up still instead of a blanket ban.
Piratebay has legal torrents, yet they are blocked as some form of descrimnation blanket ban. So it does have it's possibilities, albiet a dangerous path that should not be tread lightly.
On the other hand, why not inverse all inaccessible content to legal oppressors? Change the default meaning of 403 for example to "Access denied for permissive or legal reasons".
I agree with your sentiment though - the internet _should_ be free.
Content shouldn't be blocked, the Internet should be free and open. However without letting people know what's happening they will not complain.
Of course what the browser should display is:
451: The Right Honourable Claire Perry MP has deemed that you shouldn't be able to look at this site.
IMHO, she is ignorant(1) and irrational(1), and there for scared witless of the internet, so she seeks to control it. I don't think she knows how wrong she is, there for I don't see her as evil, as such. However, it does seem our vote whore of a Prime Minister listens to her every word, hence the attempts to block porn and make people opt in to avoid the blocks, since her position ties in to an awful lot of right wing voters, who are equally, if not more, ignorant and irrational. They are the kind of people who genuinely believed Rock and Roll was the work of the devil, and that black people are a different species.
(1)I use these words for their real meaning and not the insult, judgement, or political value. I honestly think many people literally do not understand the technical issues, and act illogically as a result. I believe this is a lot to do with the traditional media, who politicians rely on, issuing scare stories about the internet because their business were and still are threatened by it. My "evil" in this is those who spread the lies, ie, the media. I hate to admit this, but in many ways I see the likes of Clair Perry as well intentioned victims and mules of the media.
And the distance between them is measured as response code 451
404 already exists.
"The server understood the request, but is refusing to fulfill it" is already 403.