PHP ОТПРАВЛЯЕТ данные на HTTPS с ошибкой 404! Даже с (CURL, fopen и file_get_contents)

#php #curl #post #fopen #file-get-contents

Вопрос:

Все мои усилия провалились! Я не могу ПУБЛИКОВАТЬ данные HTTPS даже с помощью CURL , fopen и file_get_contents !
Я всегда получаю 404 ошибку!
Однако, когда я очищаю страницу с помощью метода, она открывается без ошибок! GET
Но когда я использую POST метод для этой страницы, its same URL он всегда завершается 404 ошибкой!


Мой PHP-код :

 <?php
###########################################
    function curl_fopen_getContents( $functionName='curl', $method='GET' ) 
    {
        $post_data = http_build_query(array( 'a'   => '1' ));
        $cookies   = 'a=1';

        $opts = array('http' => array(
            'method'     => strtoupper($method), 
            'header'     => 
                            "Content-type: application/x-www-form-urlencodedrn"
                           ."Content-Length: " . strlen($post_data)."rn"
                           ."Cookie: $cookiesrn",
            'content'    => $post_data,
            'timeout'    => 60
        ));
        $context = stream_context_create($opts);
        
        ///////////////////////////////////
        
        // you can decode it 
        $https_url = 'my_url_here';
        
        if( $functionName=='fopen' )
        {
            $result = fopen($https_url, 'r', false, $context); @fpassthru($result); @fclose($result);
        }
        elseif( $functionName=='file_get_contents' )
        {
            $result = file_get_contents($https_url, false, $context);
        }else{
            $result = curl_post($https_url, $method, $post_data, $cookies);
        }
        return $resu<
    }

###########################################

    function curl_post( $https_url, $method='GET', $post_data='', $cookies='' ) 
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$https_url);
        curl_setopt($ch, CURLOPT_COOKIE, $cookies);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        #curl_setopt($ch, CURLOPT_HEADER, 1);
        
        if( strtoupper($method) !='GET' )
        {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        }

        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        $data = curl_exec($ch); if(!$data){ $data=curl_error($ch); }
        curl_close($ch);
        return $data;
    }
    
###########################################
    
    /*
        curl_fopen_getContents( $functionName, $method );
        
        $functionName = curl/fopen/file_get_contents
        $method       = GET/POST
    */
    echo curl_fopen_getContents( 'curl', 'GET' );
    
###########################################
?>
 

Не могли бы вы помочь, пожалуйста? Большое спасибо.

Комментарии:

1. Способна ли получающая страница работать по протоколу HTTPS?

2. Если ваш сценарий curl находится на странице http, вы не можете вызвать страницу https. Сервер возвращает ошибку безопасности

3. @RiggsFolly — Да, я использую HTTPS на своем локальном сервере. И страница-пиявка тоже использует HTTPS.

4. @Stefino76 — Страница с пиявками использует HTTPS, и я тоже использую HTTPS на своем локальном сервере.

Ответ №1:

Проблема заключалась в том, что я забыл передать несколько файлов cookie..