If the client wants to negotiate a change in the protocol, it does so through the upgrade http header, perhaps like so:
Upgrade: TLS/1.0
If the server is willing to upgrade, it responds with a 101 status code and the upgrade header, perhaps like so:
HTTP/1.1 101 Switching Protocols
Upgrade: TLS/1.0, HTTP/1.1
But what if the server is unwilling or unable to upgrade? What status code does it reply with? And what headers does it send?
It ignores the request to upgrade and responds as if the
Upgradefield was not present in the request, so the requested resource is returned.