代码之家  ›  专栏  ›  技术社区  ›  meallhour

Curl GET生成未经授权的访问错误

  •  0
  • meallhour  · 技术社区  · 7 年前
    #!/bin/bash
    url="https://10.10.10.10/api"
    user="username"
    password="password"
    
    curl \
    --insecure \
    --request GET \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --user "${user}:${password}" \
    "${url}"
    

    bash script 拒绝访问错误

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
    <style type="text/css">
    <!--
    body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
    fieldset{padding:0 15px 10px 15px;}
    h1{font-size:2.4em;margin:0;color:#FFF;}
    h2{font-size:1.7em;margin:0;color:#CC0000;}
    h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
    #header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
    background-color:#555555;}
    #content{margin:0 0 0 2%;position:relative;}
    .content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
    -->
    </style>
    </head>
    <body>
    <div id="header"><h1>Server Error</h1></div>
    <div id="content">
     <div class="content-container"><fieldset>
      <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
      <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
     </fieldset></div>
    </div>
    </body>
    </html>
    

    我能够通过邮递员使用相同的用户名和密码执行相同的api。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Walid Ahmed    7 年前

    Through Postman 您可以尝试以下操作:

    在Postman视图中,您会发现它将凭证转换为用作授权标头的编码字符,获取此值并将bash脚本编辑为:

    #!/bin/bash
    url="https://10.10.10.10/api"
    user="username"
    password="password"
    
    curl \
    --insecure \
    --request GET \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --header "Authorization: Basic {ValueFromPostman}" \
    "${url}"
    

    我希望它对你有用

        2
  •  1
  •   glenn jackman    7 年前

    bash数组非常适合以可读的方式保存程序选项。假设您的服务器期望 Basic access authentication

    #!/bin/bash
    url="https://10.10.10.10/api"
    user="username"
    password="password"
    curl_opts=(
        --insecure 
        --request GET 
        --header "Accept: application/json" 
        --header "Content-Type: application/json" 
        --header "Authorization: Basic $( echo "$user:$password" | base64 )" 
    )
    
    curl "${curl_opts[@]}" "$url"
    

    但是,您可能需要将您的用户标识/密码/其他客户端机密发送到特定的API端点以请求 代币 ,后续API请求需要该令牌。检查您正在使用的API的文档。

    推荐文章