Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php GET可以工作,但POST不能用于静默登录_Php_Http_Https - Fatal编程技术网

Php GET可以工作,但POST不能用于静默登录

Php GET可以工作,但POST不能用于静默登录,php,http,https,Php,Http,Https,我们有两个系统,一个是PHP系统,另一个是asp.net系统,尽管它们使用相同的用户名/密码信息,但目前需要单独登录 作为一个快速的临时修复,我想我可能可以修改PHP登录页面,在后台将登录详细信息传递到asp.net页面,这样用户就可以自动登录到这两个系统,而不必在导航到另一个页面时再次输入他们的凭据 当我使用GET来传递参数时,这很好,但是当然,GET参数(包括密码)会存储在服务器日志中,这不是一个好主意 所以我想改用POST,但我无法让它工作。我在下面的代码中使用了CURL-less方法,它

我们有两个系统,一个是PHP系统,另一个是asp.net系统,尽管它们使用相同的用户名/密码信息,但目前需要单独登录

作为一个快速的临时修复,我想我可能可以修改PHP登录页面,在后台将登录详细信息传递到asp.net页面,这样用户就可以自动登录到这两个系统,而不必在导航到另一个页面时再次输入他们的凭据

当我使用GET来传递参数时,这很好,但是当然,GET参数(包括密码)会存储在服务器日志中,这不是一个好主意

所以我想改用POST,但我无法让它工作。我在下面的代码中使用了CURL-less方法,它似乎可以工作,但是asp.net登录过程会创建安全的cookie,当我获取页面时,它们会被存储,而当我发布到页面时,它们不会被存储

$url = 'https://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2');

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

var_dump($result);
我在过去也尝试过类似于CURL的东西,所以我知道CURL创建了自己的浏览器上下文,但我认为直接的POST请求可以工作,但是它的行为似乎与CURL非常相似


有什么办法可以让它发挥作用,还是我对POST的工作原理有一个根本性的误解?如果是的话,有人能给我一个好的解释吗

在ASP.NET Web服务器上禁用GET请求的日志记录,您就不需要再解决这个问题了:实际上,为什么不使用来自PHP的CURL请求并发送自定义post参数呢。这应该行得通。@jackcurl创建了自己的上下文,所以CURL会话中存储的任何cookie都只能通过CURL访问,我需要cookie能够被用户的正常浏览器会话访问。