We've developing mobile application using CodeIgniter PHP framework. App was tested on several hardware phones and emulators. Everything works fine everywhere - except Nokia S40 built-in browser. When browsing via thatbrowser, it reveals that $_SERVER['HTTP_REFERER'] is not set at all - even using straight PHP with no frameworks. Specifically, app was tested on Nokia 3500 Classic and 6300. Also, when using Opera Mini on the same phones, all worked like a charm. Server is Apache2 with PHP5, CodeIgniter 1.7, but I don't think it's a framework issue.
Strange thing is, it seems that only a few people in the world got, or mentioned, this issue, with no answer. Well, the question is - do we missing something? Does Nokia S40 built-in browser really strips out HTTP_REFERER, or is it server issue? What could be done to fix or mitigate it?
Referers are not required to be sent by any browser. Do not build anything assuming you will be getting them from a browser; there are other things that can block their appearance (browser plugins, security software, etc.)
In order for HTTP_REFERER to exist, there needs to be a HTTP_REFERER header. This header does not exist if someone types in the URL directly (ie: does not follow a link to the page). It only exists when someone clicks on a link from another page. And, some browsers don't send them.
Yes, HTTP_REFERER are optional http headers. Some carrier, or his transcoders (proxies), are deleting HTTP_REFERER header.