[SPEC] Encouraging HTTP Proxies to support Gemini hosts self-blacklisting

Sean Conner sean at conman.org
Sun Feb 21 20:26:34 GMT 2021
It was thus said that the Great Mansfield once stated:
> 
> Maybe the proxy could instead return a page that says... "The owner of this
> content has requested that it only be accessible through the gemini
> protocol and we respect that. Please use a Gemini client to access content
> at gemini://ondollo.com. Here are some recommended clients: <list of one or
> more clients>"

  After reading up on HTTP response codes, I think the most appropriate one
is 409 Conflict.  The HTTP spec (RFC-2616, section 10.4.10, with added
commentary from me):

	The request could not be completed due to a conflict with the
	current state of the resource. 

The owner of the Gemini server does not want data proxied to HTTP.

	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.

To resolve the situation, use an actual Gemini client.

	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.

Which can be included in the body of the 409 response (most, if not all, web
servers allow custom error pages to be sent).

  Short of that, then 407 Proxy Authentication Required is the next best
one, kind of.  The semantics are perfect, but it would seem to apply
(RFC-2616, section 10.4.8):

	This code is similar to 401 (Unauthorized), but indicates that the
	client must first authenticate itself with the proxy. The proxy MUST
	return a Proxy-Authenticate header field (section 14.33) containing
	a challenge applicable to the proxy for the requested resource. The
	client MAY repeat the request with a suitable Proxy-Authorization
	header field (section 14.34). HTTP access authentication is
	explained in "HTTP Authentication: Basic and Digest Access
	Authentication"

> # An Alternative
> 
> An additional thought I had... the above feels like it might be too process
> heavy (but... it's also super simple...). What if proxy server
> implementations were encouraged to check gemini://<gemhost>/noproxy.txt
> before a request? (Every request? Feels too much like the favicon. The
> first request? What if the creating-user changes their mind?) If my proxy
> checks that URL and gets a 20 status back, then it refuses to proxy the
> connection. If it gets a 51 back, then it continues with proxying the
> request.

  If only there was a file that automated agents already use ... like
robots.txt, where one could do something like ...

	User-agent: proxy
	Disallow: /

But alas, not-so-benevolent dictator wanna-be Drew DeVault said thou shalt
not do that:

	https://mailing-list-archive.gemi.dev/www/2020/003506.html

  -spc (I don't agree with Drew, and think robots.txt is find, and already
	in place in most cases ... )



Archive home | About this archive