What is the “raw HTTP header”? What is the differe

2019-04-08 12:04发布

问题:

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?

回答1:

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



回答2:

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.