我们假设在https://xyz.appspot.com托管了一个app引擎标准python应用,其网址受以下内容保护:
login: admin
secure: always
如何使用curl运行API?我想真正的问题是如何使用curl对应用程序进行身份验证。如果该应用程序是从浏览器中使用的,那么会将其重定向到Google登录名,但我想知道如何从卷曲中模拟相同的内容。
非常感谢任何帮助。
谢谢, Raghu
答案 0 :(得分:1)
一种方法是首先在浏览器中进行身份验证,然后将cookie从那里复制到curl。例如,在Chrome中,您可以打开devtools(F12)并选择“网络”标签。
当您访问安全资源时,它将显示在那里。然后你可以right click -> Copy -> Copy as cURL (bash)
。
这将为您提供一个有权调用您的安全资源的cURL命令。
答案 1 :(得分:0)
根据@Erfa的建议,我在Chrome中访问了该网站,同时保持开放工具的开放性。
浏览器将指导您完成登录过程并显示该站点。此时,右键单击" Network"中的GET请求。选项卡并选择"另存为内容和#34;它将API信息保存在文本文件中。
在文件中,您将找到与GET请求一起发送的cookie。您现在可以使用与curl相同的cookie,如下所示:
$ curl --cookie "NAME=VALUE" <URL>
答案 2 :(得分:0)
您可以结合使用Cloud Endpoints和API Key。 在Google Cloud Platform的这篇文章https://cloud.google.com/endpoints/docs/frameworks/python/restricting-api-access-with-api-keys-frameworks中,您有一个如何使用此组合进行卷曲身份验证的示例:
如果API或API方法需要API密钥,请使用a提供密钥 查询参数named key,如此cURL示例所示:
curl \ -H "Content-Type: application/json" \ -X POST \ -d '{"message": "echo"}' \ "${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}
其中HOST和API_KEY是包含API主机名和API密钥的变量, 分别。将echo替换为API的名称,将v1替换为 您的API版本。