>  기사  >  백엔드 개발  >  PHP에서 컬을 사용하여 헤더 매개변수를 설정하는 방법

PHP에서 컬을 사용하여 헤더 매개변수를 설정하는 방법

藏色散人
藏色散人원래의
2020-07-28 11:03:0627803검색

PHP 컬로 헤더를 설정하는 방법: 먼저 브라우저를 초기화하고 브라우저 설정에 매개변수 URL을 전달한 다음 이를 문자열 형식으로 브라우저에 반환하고 데이터가 있는지 확인합니다. data; 마지막으로 "curl_setopt" 메소드를 통해 헤더를 설정하세요.

PHP에서 컬을 사용하여 헤더 매개변수를 설정하는 방법

권장: "PHP Tutorial"

PHP는 CURL을 사용하여 헤더 매개변수를 설정하고 Content-Type을 설정합니다: application/json 유형 배경 데이터 수신

CURL 함수

public function CurlRequest($url,$data=null,$header=null){
  //初始化浏览器
  $ch = curl_init();
  //设置浏览器,把参数url传到浏览器的设置当中
  curl_setopt($ch, CURLOPT_URL, $url);
  //以字符串形式返回到浏览器当中
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  //禁止https协议验证域名,0就是禁止验证域名且兼容php5.6
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  //禁止https协议验证ssl安全认证证书
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  //判断data是否有数据,如果有data数据传入那么就把curl的请求方式设置为POST请求方式
  if ( !empty($data) ) {
    //设置POST请求方式
    @curl_setopt($ch, CURLOPT_POST, true);
    //设置POST的数据包
    @curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  }
  //设置header头
  if ( !empty($header) ) {
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  }
  //让curl发起请求
  $str = curl_exec($ch);
  //关闭curl浏览器
  curl_close($ch);
  //把请求回来的数据返回
  return $str;
}

Function call

$url = "http://desk.yunindex.cn/test";
$jsonArr = [
  'accountid' => '34',
  'option' => 'chat_index',
];
$jsonStr = json_encode($jsonArr);  //设置了Content-Type: application/json,传参要转化为JSON,否则后台接收不到数据
//header头设置
$headers = array(
  "Content-Type: application/json",
  "Content-Length: " . strlen($jsonStr) . "",
  "Accept: application/json",
  "client-id:5K8264ILTKCH16CQ2502SI8ZNMTM67VS",    //自定义参数
  "client-secret:C380BEC2BFD727A4B6845133519F3AD6"  //自定义参数
);
$data = $this->CurlRequest($url,$jsonStr,$headers);

백엔드 수용

json_encode($_SERVER)  

$_SERVER를 사용하면 헤더에 설정된 커스텀 매개변수가 여기에 반영됩니다.

결과

{
"USER": "www",
"HOME": "\/home\/www",
"HTTP_CLIENT_SECRET": "C380BEC2BFD727A4B6845133519F3AD6",       //这是自定义的参数,跟上面传的参数相对于,会自动转化为大写跟下划线
"HTTP_CLIENT_ID": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",          //这是自定义的参数,跟上面传的参数相对于,会自动转化为大写跟下划线
"HTTP_ACCEPT": "application\/json",  
"HTTP_CONTENT_LENGTH": "40",
"HTTP_CONTENT_TYPE": "application\/json",
"HTTP_HOST": "desk.yunindex.cn",
"SCRIPT_FILENAME": "\/workspace\/php\/index_desk\/htdocs\/index.php",
"REDIRECT_STATUS": "200",
"SERVER_NAME": "desk.yunindex.cn",
"SERVER_PORT": "80",
"SERVER_ADDR": "192.168.1.90",
"REMOTE_PORT": "64524",
"REMOTE_ADDR": "192.168.1.113",
"SERVER_SOFTWARE": "nginx\/1.15.2",
"GATEWAY_INTERFACE": "CGI\/1.1",
"REQUEST_SCHEME": "http",
"SERVER_PROTOCOL": "HTTP\/1.1",
"DOCUMENT_ROOT": "\/workspace\/php\/index_desk\/htdocs",
"DOCUMENT_URI": "\/index.php",
"REQUEST_URI": "\/test",
"SCRIPT_NAME": "\/index.php",
"CONTENT_LENGTH": "40",
"CONTENT_TYPE": "application\/json",
"REQUEST_METHOD": "POST",
"QUERY_STRING": "",
"FCGI_ROLE": "RESPONDER",
"PHP_SELF": "\/index.php",
"REQUEST_TIME_FLOAT": 1557025085.410574,
"REQUEST_TIME": 1557025085
}

여기서 nginx를 사용하면 헤더에 밑줄이 있는 경우 문제가 발생합니다. (예: client_secret) $_SERVER를 사용할 때 매개변수가 수신되지 않는 것 같습니다. 매개변수를 수신하고

결과를 수신하려면 nginx.conf를 구성하고 underscores_in_headers를 추가해야 합니다.

file_get_contents('php://input')
.

위 내용은 PHP에서 컬을 사용하여 헤더 매개변수를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.