Web lists-archives.com

Re: [PHP] Re: header() not working?




On 08.12.2016 at 18:53, Ryan Pallas wrote:

> On Thu, Dec 8, 2016 at 10:40 AM, Christoph M. Becker <cmbecker69@xxxxxx>
> wrote:
> 
>> On 08.12.2016 at 17:30, Tedd Sperling wrote:
>>
>>> Hi gang:
>>>
>>> For several years I have had an example of a redirect working on my
>> college’s Server for my students to review.
>>>
>>> The code is simple:
>>>
>>> header ("Location:$where");
>>> exit(0);
>>>
>>> The $where is URL’s such as “amazon.com” coming from a POST:
>>>
>>> $where = isset($_POST['where']) ? $_POST['where'] : null;
>>>
>>> Like I said, this has worked for years and now it doesn’t.
>>>
>>> I suspect something has changed in the school’s Server, but I don’t know
>> what that may be.
>>>
>>> Any ideas as to why and how to fix it?
>>
>> Have you checked that no output has been generated before these lines
>> are executed?  Even a single space could stop the headers from being
>> sent.  I suggest you enable error_reporting, and check the respective
>> log file; there you might find something like "Cannot send headers.
>> Headers already sent".
>
> If having passed that check, have you verified the header isn't returned?
> If it is, the browser may not be respecting it, because according to the
> specification[1] "The field value consists of a single absolute URI", and
> the string "amazon.com" does not validate as an absolute URI according to
> the specs for that[2] which states "absoluteURI    = scheme ":" *( uchar |
> reserved )".

Good catch!  Note, however, that RFC 7231 which obsoletes RFC 2616 has
relaxed this:

  Location = URI-reference

Still, `amazon.com` would not be valid according to the spec.

Cheers,
Christoph

> [1] - https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
> [2] - https://www.w3.org/Protocols/HTTP/1.0/spec.html#URI


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php