XMLHttpRequest Send 转换为 PHP file_get_contents
XMLHttpRequest Send converted to PHP file_get_contents
所以我试图将 XHR 中的发送数据放入 PHP 的 file_get_contents 中的 header。
因为我在发送post请求时需要确切的Refererheader,所以我需要这样做PHPfile_get_contents
stream_context_create
风格。
我基本上需要这个:
xhr.open('POST', 'https://example.com/test');
xhr.setRequestHeader('Referer','https://example.com');
xhr.send('{thing1: "abc", thing2: "def", thing3: "ghi"}');
变成了PHP,像这样:
$url = "https://example.com/test";
$content = '{thing1: "abc", thing2: "def", thing3: "ghi"}';
$opts = ["http" => ["method" => "POST","header" =>
"Content-Type: application/json; charset=UTF-8\r\n".
"Referer: https://example.com\r\n".
"X-Requested-With: XMLHttpRequest\r\n"]];;
echo file_get_contents($url, true, stream_context_create($opts));
我知道 X-Requested-With: XMLHttpRequest
部分是正确的,但我不知道我可以在 $opts
变量中输入的具体 header 值是什么替换 xhr.send()
function/just 发送 JSON 数据。
我认为 xhr 不允许您设置 Referer header 它是自动设置的。
在服务器端你应该可以,见下文。
$url = "https://example.com/test";
$content = json_encode([thing1 => "abc", thing2 => "def", thing3 => "ghi"]);
$opts = [
"http" => [
"method" => "POST",
"header" => [
"Content-Type: application/json; charset=UTF-8",
"Referer: https://example.com",
"X-Requested-With: XMLHttpRequest"
],
"content" => $content
]
]
echo file_get_contents($url, true, stream_context_create($opts));
所以我试图将 XHR 中的发送数据放入 PHP 的 file_get_contents 中的 header。
因为我在发送post请求时需要确切的Refererheader,所以我需要这样做PHPfile_get_contents
stream_context_create
风格。
我基本上需要这个:
xhr.open('POST', 'https://example.com/test');
xhr.setRequestHeader('Referer','https://example.com');
xhr.send('{thing1: "abc", thing2: "def", thing3: "ghi"}');
变成了PHP,像这样:
$url = "https://example.com/test";
$content = '{thing1: "abc", thing2: "def", thing3: "ghi"}';
$opts = ["http" => ["method" => "POST","header" =>
"Content-Type: application/json; charset=UTF-8\r\n".
"Referer: https://example.com\r\n".
"X-Requested-With: XMLHttpRequest\r\n"]];;
echo file_get_contents($url, true, stream_context_create($opts));
我知道 X-Requested-With: XMLHttpRequest
部分是正确的,但我不知道我可以在 $opts
变量中输入的具体 header 值是什么替换 xhr.send()
function/just 发送 JSON 数据。
我认为 xhr 不允许您设置 Referer header 它是自动设置的。
在服务器端你应该可以,见下文。
$url = "https://example.com/test";
$content = json_encode([thing1 => "abc", thing2 => "def", thing3 => "ghi"]);
$opts = [
"http" => [
"method" => "POST",
"header" => [
"Content-Type: application/json; charset=UTF-8",
"Referer: https://example.com",
"X-Requested-With: XMLHttpRequest"
],
"content" => $content
]
]
echo file_get_contents($url, true, stream_context_create($opts));