如何将curl请求转换为javascript

时间:2019-09-26 09:22:05

标签: javascript http curl

我正在尝试将我的React代码中的HTTP请求发送到iphub API。

文档中有一个如何在此服务中使用的示例:

curl http://v2.api.iphub.info/ip/8.8.8.8 -H "X-Key: 123"

我根据一些答案转换了请求,结果看起来像这样:

const ripeEndpoint = 'http://v2.api.iphub.info/ip/8.8.8.8'
fetch(ripeEndpoint, {
  method: 'GET',
  headers: new Headers({
    'Access-Control-Allow-Origin': '*',
    'Content-Type': 'multipart/form-data',
    'X-Key': myApiKey
  }),
})

但是响应是404,我认为我的请求有误,如何知道转换后的请求是否正确?

2 个答案:

答案 0 :(得分:0)

您正在混合响应和请求标头。

  

响应标头是可以在HTTP响应中使用的HTTP header,它与消息的内容无关。响应标头,例如AgeLocationServer用于给出响应的更详细的上下文。 ...但是,在这种情况下,这些实体请求通常称为响应标头。

来源:https://developer.mozilla.org/en-US/docs/Glossary/Response_header

  

请求标头是可以在HTTP请求中使用的HTTP header,它与消息的内容无关。请求标头,例如AcceptAccept-*If-*允许执行条件请求;其他类似CookieUser-AgentReferer的上下文可以使上下文更精确,以便服务器可以定制答案。

来源:https://developer.mozilla.org/en-US/docs/Glossary/Request_header

对于一个简单的GET请求,您通常根本不需要任何标头,请参见HTTP GET request in JavaScript? 对于您的情况,在curl命令中,您指定了一个附加的标头,因此也可以使用Javascript来完成。

答案 1 :(得分:0)

尝试一下:

<?php
$ipaddress = $_SERVER['REMOTE_ADDR'];
$url = 'http://v2.api.iphub.info/ip/'.$ipaddress;
$auth = "OTf4sfpNHUhRM1AwNVMOZlJPSmRseTY0WTFsMGhtR1J0alhEbW=="; 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Key: {$auth}"]);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
?>