Why is apache not passing Location header from cgi script back to client
I have an existing cgi web app which used to work fine, but whose behaviour has changed.
One of the cgi programs (under certain conditions) returns a Location header, to cause a redirect.
The Location header never reaches the web browser - instead, Apache seems to return the contents of the page the Location header redirects to.
Unfortunately that page contains javascript which uses the query string inside the Location header - but with this new behaviour the query string is empty, because the browser still thinks the location is the original cgi script.
Why has theis behaviour changed, and what can I do to prevent it happening?
apache-http-server redirection cgi
add a comment |
I have an existing cgi web app which used to work fine, but whose behaviour has changed.
One of the cgi programs (under certain conditions) returns a Location header, to cause a redirect.
The Location header never reaches the web browser - instead, Apache seems to return the contents of the page the Location header redirects to.
Unfortunately that page contains javascript which uses the query string inside the Location header - but with this new behaviour the query string is empty, because the browser still thinks the location is the original cgi script.
Why has theis behaviour changed, and what can I do to prevent it happening?
apache-http-server redirection cgi
Apparently, the key is whether an absolute URL is specified in theLocation
header.
– Daniel B
Jan 7 at 14:30
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12
add a comment |
I have an existing cgi web app which used to work fine, but whose behaviour has changed.
One of the cgi programs (under certain conditions) returns a Location header, to cause a redirect.
The Location header never reaches the web browser - instead, Apache seems to return the contents of the page the Location header redirects to.
Unfortunately that page contains javascript which uses the query string inside the Location header - but with this new behaviour the query string is empty, because the browser still thinks the location is the original cgi script.
Why has theis behaviour changed, and what can I do to prevent it happening?
apache-http-server redirection cgi
I have an existing cgi web app which used to work fine, but whose behaviour has changed.
One of the cgi programs (under certain conditions) returns a Location header, to cause a redirect.
The Location header never reaches the web browser - instead, Apache seems to return the contents of the page the Location header redirects to.
Unfortunately that page contains javascript which uses the query string inside the Location header - but with this new behaviour the query string is empty, because the browser still thinks the location is the original cgi script.
Why has theis behaviour changed, and what can I do to prevent it happening?
apache-http-server redirection cgi
apache-http-server redirection cgi
asked Jan 7 at 14:23
Nikki LockeNikki Locke
13018
13018
Apparently, the key is whether an absolute URL is specified in theLocation
header.
– Daniel B
Jan 7 at 14:30
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12
add a comment |
Apparently, the key is whether an absolute URL is specified in theLocation
header.
– Daniel B
Jan 7 at 14:30
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12
Apparently, the key is whether an absolute URL is specified in the
Location
header.– Daniel B
Jan 7 at 14:30
Apparently, the key is whether an absolute URL is specified in the
Location
header.– Daniel B
Jan 7 at 14:30
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12
add a comment |
1 Answer
1
active
oldest
votes
According to this answer, CGI specifies two different types of redirects: internal and external.
Internal redirects (invisible to the browser) are used when you specify a URL without scheme and host (like otherpage.html
or /index.html
) in the Location
header.
External redirects (performed by the browser) are used only when you specify an absolute URL (ie. http://www.example.com/some/other/page
). Absolute URLs must start with the scheme (ie. http
).
RFC 3875 contains the relevant documentation:
The Location header field is used to specify to the server that the
script is returning a reference to a document rather than an actual
document (see sections 6.2.3 and 6.2.4). It is either an absolute
URI (optionally with a fragment identifier), indicating that the
client is to fetch the referenced document, or a local URI path
(optionally with a query string), indicating that the server is to
fetch the referenced document and return it to the client as the
response.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1391517%2fwhy-is-apache-not-passing-location-header-from-cgi-script-back-to-client%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
According to this answer, CGI specifies two different types of redirects: internal and external.
Internal redirects (invisible to the browser) are used when you specify a URL without scheme and host (like otherpage.html
or /index.html
) in the Location
header.
External redirects (performed by the browser) are used only when you specify an absolute URL (ie. http://www.example.com/some/other/page
). Absolute URLs must start with the scheme (ie. http
).
RFC 3875 contains the relevant documentation:
The Location header field is used to specify to the server that the
script is returning a reference to a document rather than an actual
document (see sections 6.2.3 and 6.2.4). It is either an absolute
URI (optionally with a fragment identifier), indicating that the
client is to fetch the referenced document, or a local URI path
(optionally with a query string), indicating that the server is to
fetch the referenced document and return it to the client as the
response.
add a comment |
According to this answer, CGI specifies two different types of redirects: internal and external.
Internal redirects (invisible to the browser) are used when you specify a URL without scheme and host (like otherpage.html
or /index.html
) in the Location
header.
External redirects (performed by the browser) are used only when you specify an absolute URL (ie. http://www.example.com/some/other/page
). Absolute URLs must start with the scheme (ie. http
).
RFC 3875 contains the relevant documentation:
The Location header field is used to specify to the server that the
script is returning a reference to a document rather than an actual
document (see sections 6.2.3 and 6.2.4). It is either an absolute
URI (optionally with a fragment identifier), indicating that the
client is to fetch the referenced document, or a local URI path
(optionally with a query string), indicating that the server is to
fetch the referenced document and return it to the client as the
response.
add a comment |
According to this answer, CGI specifies two different types of redirects: internal and external.
Internal redirects (invisible to the browser) are used when you specify a URL without scheme and host (like otherpage.html
or /index.html
) in the Location
header.
External redirects (performed by the browser) are used only when you specify an absolute URL (ie. http://www.example.com/some/other/page
). Absolute URLs must start with the scheme (ie. http
).
RFC 3875 contains the relevant documentation:
The Location header field is used to specify to the server that the
script is returning a reference to a document rather than an actual
document (see sections 6.2.3 and 6.2.4). It is either an absolute
URI (optionally with a fragment identifier), indicating that the
client is to fetch the referenced document, or a local URI path
(optionally with a query string), indicating that the server is to
fetch the referenced document and return it to the client as the
response.
According to this answer, CGI specifies two different types of redirects: internal and external.
Internal redirects (invisible to the browser) are used when you specify a URL without scheme and host (like otherpage.html
or /index.html
) in the Location
header.
External redirects (performed by the browser) are used only when you specify an absolute URL (ie. http://www.example.com/some/other/page
). Absolute URLs must start with the scheme (ie. http
).
RFC 3875 contains the relevant documentation:
The Location header field is used to specify to the server that the
script is returning a reference to a document rather than an actual
document (see sections 6.2.3 and 6.2.4). It is either an absolute
URI (optionally with a fragment identifier), indicating that the
client is to fetch the referenced document, or a local URI path
(optionally with a query string), indicating that the server is to
fetch the referenced document and return it to the client as the
response.
answered Jan 7 at 21:21
Daniel BDaniel B
33.6k76187
33.6k76187
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1391517%2fwhy-is-apache-not-passing-location-header-from-cgi-script-back-to-client%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Apparently, the key is whether an absolute URL is specified in the
Location
header.– Daniel B
Jan 7 at 14:30
Aha! I never knew that. If you make your comment into an answer, I will happily accept it.
– Nikki Locke
Jan 7 at 15:12