In Zend Framework in Response Class there are two different arrays for storing headers: _headers[]
and _headersRaw[]
. And there are appropriate methods for setting each one:
setHeader(), getHeaders(), clearHeader()
and
setRawHeader(), getRawHeaders(), clearRawHeaders()
.
What is the reason to have "header" and "raw header"? Is there some special kind of usage in practice for each of these headers?
using setHeader you set key vale pair without worrying about there formatting e.g
$this->getResponse()->setHeader('Content-type','json');
while in case of setRawHeader() you put the whole/full header as it is with proper formating
I'm a bit late here...
Raw means that the header is not URL-encoded, whereas if the word "raw" is omitted, the header is encoded. For example:
$header = 'http://www.mywebsite.com?q=string'; // this is raw, no encoding
echo $header; // no encoding so output is -> http://www.mywebsite.com?q=mystring
echo rawurlencode($header); // URL-encoded so output is -> http%3A%2F%2Fwww.mywebsite.com%3Fq%3Dstring
The special characters : / ? = have been URL-encoded as
%3A
%2F
%3F
%3D
respectively.