Hi I have a server which has several virtual hosts set up on it.
I wanted to make a curl request to this server's ip using php. Also I wanted to make this request to a specific hostname on the server's ip.
Is there a way to do it?
A bit more elaboration : I want to make a curl requests between my servers using internal LAN, using their internal IP. The issue is that I have several sites hosted on this server. So when i make a curl request to the internal IP of the server.. something like (curl_init(xxx.xxx.xxx.xxx)), I want to be able to be tell apache to go to a particular folder pointed to by a virtual host. I hope that made the question a bit more clear.. – Vishesh Joshi 3 mins ago edit
3 Answers
Answers 1
You can set the host header in the curl request:
<?php $ch = curl_init('XXX.XXX.XXX.XXX'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); echo curl_exec($ch);
Answers 2
Base on Leigh Simpson, It works, but I need query string attach with it. That's what I work around:
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://xxx.xxx.xxx.xxx/index.php?page=api&action=getdifficulty"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); echo curl_exec($ch); ?>
Answers 3
For HTTPS sites use CURLOPT_RESOLVE
which first appeared in PHP 5.5.
<?php $ch = curl_init('https://www.example.com/'); // note: array used here curl_setopt($ch, CURLOPT_RESOLVE, ["www.example.com:443:172.16.1.1"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_VERBOSE, true); $result = curl_exec($ch);
Sample output:
* Added www.example.com:443:172.16.1.1 to DNS cache * Hostname www.example.com was found in DNS cache * Trying 172.16.1.1...
0 comments:
Post a Comment