cURL
(아래)을 사용하는 PHP 프록시가 있습니다. POST
을 얻을 때마다 헤더 X-CSRF
토큰이 null로 설정됩니다. X-CSRF
토큰은 POST
헤더에서 프록시 사용과 그렇지 않은 유일한 차이점입니다.cURL X-CSRF 토큰 문제
그래서 프록시를 사용하지 않고 X-CSRF
토큰이 올바르게 설정되도록 수정하는 방법을 궁금합니다. 당신은 AJAX를 사용하는
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0');
$browserRequestHeaders = getallheaders();
$curlRequestHeaders = array();
foreach ($browserRequestHeaders as $name => $value) {
$curlRequestHeaders[] = $name . ": " . $value;
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $curlRequestHeaders);
switch ($_SERVER["REQUEST_METHOD"]) {
case "POST":
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents("php://input"));
break;
case "PUT":
curl_setopt($ch, CURLOPT_PUT, TRUE);
curl_setopt($ch, CURLOPT_INFILE, fopen("php://input"));
break;
}
//Other cURL options.
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_FAILONERROR, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, 0);
// Cookie cURL options.
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
//handle other cookies cookies
foreach ($_COOKIE as $k=>$v) {
if(is_array($v)){
$v = serialize($v);
}
curl_setopt($ch,CURLOPT_COOKIE,"$k=$v; domain=.$cookiedomain ; path=/");
}
// Set the request URL.
curl_setopt($ch, CURLOPT_URL, $url);
// Make the request.
$response = curl_exec($ch);
curl_setopt($ch, CURLOPT_POST, 0);
$responseInfo = curl_getinfo($ch);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
이미지 보여주는 헤더 http://i.stack.imgur.com/78fVV.jpg
$ ('meta [name = csrf-token]'). attr ('content'); 또한 null을 포함합니다. – Beep
예, 수정 사항에서 제안하는대로 : 실제 HTML에서 작동하는 코드로 대체해야합니다. 웹 사이트에서 반환 된 HTML 소스 코드를보고 유스 케이스에 맞는 요소를 찾아야한다. – user4416936
일반적으로 'CSRF'토큰을 포함하는 meta 요소는 html에서 프록시를 통해 null이다. 일반적으로 프록시를 사용하지 않을 때 설정되지만, 어떤 이유로 'CSRF'가 설정되지 않습니다. 게시물이 null 값을 반환하지 않으면 제공된 'JS'만 반환됩니다. '' 은 이 아닙니다. name = "csrf-token"content = "asldkfh">' – Beep