Я пытаюсь настроить следующий код для приема запросов curl от php с помощью nodejs через протокол https. Я знаю, что код работает с http в стороне nodejs ., но как только я переключить протокол HTTPS, "RECEIVED"
не вошел в nodejs Это:app.post ('/ posts' in socket.io с https
app.post('/posts', function(req, res){
console.log("RECEIVED");
});
Подводя итог:
- «получил» регистрируется с nodejs в режиме HTTP
- "получил" является НЕ вход с nodejs в режиме HTTPS
- $ curl_url (в HTTP) 'http://127.0.0.1:'.. $ Socket_port '/ сообщений;
- $ curl_url (в HTTPS) 'https://127.0.0.1:'. $ Socket_port. '/ Posts';
Есть ли у кого-нибудь идеи по этому поводу? Вот мой локон функция:
$ch = curl_init();
$ch_options = array("Expect:");
if($encode_json){
array_push($ch_options,"Content-type: application/json");
$data = json_encode($data);
}else{
$data = http_build_query($data);
}
//$data isn't received in either format mode
curl_setopt($ch, CURLOPT_HTTPHEADER, $ch_options);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
$feedback = curl_getinfo($ch);
curl_close($ch);
EDIT:. Код, который решает все (вызывается после app.post, , который работает с HTTP с HTTPS только этой функции [app.post ('/ пост'. ..] не AFAIK)
if(protocol == "https"){
preparedApp = require(protocol).createServer(sslOptions,app);
}else if(protocol == "http")
preparedApp = require(protocol).Server(app);
preparedApp.listen(socket_port, function(){
//literally nothing here
});
$feedback
свалка:
print_r:
Array
(
[url] => https://127.0.0.1:socket_port/posts
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 1
[redirect_count] => 0
[total_time] => 0.005724
[namelookup_time] => 1.1E-5
[connect_time] => 5.5E-5 //IT IS connecting/knows presence, but doens't route /posts...
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 127.0.0.1
[certinfo] => Array
(
)
[primary_port] => socket_port
[local_ip] => 127.0.0.1
[local_port] => 54576
)
Вы должны настроить сервер [HTTPS] (http://stackoverflow.com/questions/11744975/enabling-https-on-express-js) в своем узле вместо HTTP-протокола. – Adam
Вы используете https.createServer? – Gary
@Gary Сервер настроен отлично с https, извините, если я забыл упомянуть об этом. Все работает, кроме этого ... – Fane