TempData is a way to persist something between HTTP requests. Because HTTP is inherently stateless, you can't persist something without having a way to identify the client.
TempData uses the Session as storage, which by default uses cookies to persist a user's session between HTTP requests. A cookie is included in every request with a key to that particular user's session.
If you want TempData to work without cookies, you can set the cookieless="true"
attribute of the sessionState
tag in your web.config file. That appends a query string parameter to every link in your site to achieve the same result. However, it's not recommended and you will have issues if you're using MVC 4.
If you want it to work without using cookies, include a query string parameter on the target URL instead if possible.