TCP/IP is not OSI.
While OSI does provide some (limited) ability to swap out protocol layers, mainly because the semantics of the layers are somewhat more abstractly defined, but you're generally not going to be able to swap connection-mode for connectionless-mode transport layers under an application. For two different connection-mode layers, you have a good shot, but not between the different classes.
That being said, there's no reason one could not create a UDP-based HTTP (such a spec would require reinventing much of what TCP does - the HTTP spec does require a reliable transport, for example), or even one for OSI CONS/TP3 (and that would be fairly easy), but the current specs do *not* actually do that. So HTTP cannot run over anything other than TCP, since the bindings for running HTTP over anything other than TCP have not been written. Nor have they been widely implemented, which is the real problem. If you wanted to serve web pages over UDP, even if there were a protocol defined, it's not implemented by any browsers.