You don't need to send the HTTP 1.1 header and that might be what's preventing the redirect from working. Your web server will add this one automatically because it needs to send the status code. Instead, pass the 307 status as header()'s third parameter:
header('location: http://localhost/some/url', true, 307);
The redirect headers are parsed by your browser, so "localhost" will be the same machine your browser is running on.
To pass all the GET parameters, you could append $_SERVER['QUERY_STRING']
to the URL:
header('location: http://localhost/some/url?' . $_SERVER['QUERY_STRING'], true, 307);
POST parameters are more complicated. You'll need to build your own URL by concatenating everything from the $_POST array. Be sure to urlencode() the values.
$redirect_url = 'http://localhost/some/url?';
foreach($_POST as $key => $value){
$redirect_url .= $key . '=' . urlencode($value) . '&';
}
header('location: ' . $redirect_url, true, 307);
And bear in mind you can only redirect a POST request as a GET. But if you're just building a mock for testing your gateway integration, that should be fine.