【问题标题】:How to convert curl request to javascript如何将 curl 请求转换为 javascript
【发布时间】:2020-01-26 12:58:38
【问题描述】:

我正在尝试从我的反应代码向 iphub API 发送 HTTP 请求。

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

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,我认为我的请求是错误的,如何知道转换后的请求是否正确?

【问题讨论】:

  • Access-Control-Allow-Origin 是一个 response 标头,试图将其指定为 request 标头是零意义。
  • 'Content-Type': 'multipart/form-data' – 为什么?您的 cURL 命令中没有任何内容会导致使用它。
  • 这个 API 甚至支持 CORS 吗?

标签: javascript http curl


【解决方案1】:

您混淆了响应和请求标头。

响应标头是一个HTTP header,可用于 HTTP 响应并且与消息内容无关。响应标头,如 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 中执行此操作。

【讨论】:

    【解决方案2】:

    试试这个:

    <?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);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 2021-11-14
      • 2018-08-29
      • 2022-01-08
      • 2020-02-26
      • 2019-06-28
      • 2021-03-29
      • 2018-01-30
      • 2023-02-14
      相关资源
      最近更新 更多