- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试连接到 API,对用户进行身份验证,然后查看用户详细信息。这是通过首先访问登录端点来完成的
http://api.example.com/login/<username>/<password>
登录然后查看用户详细信息:
http://api.example.com/user/
这一切都适用于网络浏览器。但是,一旦我尝试使用 Curl,登录就可以正常工作,但是在尝试查看用户详细信息时,我会返回 401,未经授权的错误。我相信这是因为 Curl 没有正确保存 session cookie?有人可以指出为什么它不起作用以及如何解决它吗?我试过搜索堆栈交换,但是,我尝试过的解决方案都不适用于我的情况。我用来 curl 端点的代码如下所示。谢谢!
define("COOKIE_FILE", "cookie.txt");
// Login the user
$ch = curl_init('http://api.example.com/login/joe/smith');
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec ($ch);
// Read the session saved in the cookie file
echo "<br/><br/>";
$file = fopen("cookie.txt", 'r');
echo fread($file, 100000000);
echo "<br/><br/>";
// Get the users details
$ch = curl_init('http://api.example.com/user');
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec ($ch);
这段代码会输出:
HTTP/1.1 200 OK Date: Mon, 22 Oct 2012 21:23:57 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Set-Cookie: cfapi=f481129c9616b8f69cc36afe16466545; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: application/json X-Powered-By: CFWAPI 0.1a Content-Length: 46 {"status":200,"msg":"Successfully Logged In."}
# Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. api.example.com FALSE / FALSE 0 cfapi 94f63b07ccf7e34358c1c922341c020f
HTTP/1.1 401 Unauthorized Date: Mon, 22 Oct 2012 21:23:57 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Set-Cookie: cfapi=a8eb015a7c423dde95aa01579c4729a4; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: application/json X-Powered-By: CFWAPI 0.1a Content-Length: 49 {"status":401, "msg":"You need to login first!"}
最佳答案
您还需要设置选项 CURLOPT_COOKIEFILE
。
手册中这样描述
The name of the file containing the cookie data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file. If the name is an empty string, no cookies are loaded, but cookie handling is still enabled.
由于您使用的是 cookie jar,因此您最终会在请求完成时保存 cookie,但由于未提供 CURLOPT_COOKIEFILE
,因此 cURL 不会在后续请求中发送任何已保存的 cookie。
关于php - 使用 Curl 和 PHP 保持 session 活跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020404/
尝试根据 :server-name 在请求中返回的内容加载特定模板: (ns rosay.views.common (:use noir.core) (:require [noir.reque
我想检查谁是活跃用户(过去 7 天都登录过)以及谁是非活跃用户(过去 7 天没有登录过)。我有 2 个表用户和机构。用户表结构如下: id | first_name | email | agency
我的 CSS 有问题。我试图将事件类设置为在垂直菜单上以粉红色突出显示,但事实并非如此。我如何在没有用户悬停在它上面的情况下保持它点亮。这是我的 HTML 和 CSS。 HTML 代码:
我有一个 Tile,当它处于 Activity 状态时,会运行一个计时器,在这五分钟内执行一项任务,然后在一定时间后返回到非 Activity 状态。 但是,我遇到的问题是服务被终止了。当所述计时器启
我已经知道如何在点击类(class)时激活它,但是当我将鼠标悬停在特定区域时如何激活类(class)? 这里是点击时获取事件类的代码: >Contact 是不是这样的: $('').hover(
我在使用 screen 时遇到问题。我知道 screen session 在主进程工作时工作,但我怎样才能让这个 session 保持事件状态?我需要这个,因为 session 关闭时有一些子进程被杀
我有一个 session 超时为 15 分钟的站点。在某些页面上,用户有时会花费超过 15 分钟的时间来填写回复。在这种情况下,使 session 保持事件状态的最佳解决方案是什么? 我已经在这些页面
我正在网页(在弹出窗口中)检查用户状态 - 他是活跃的还是空闲的。如果他空闲超过 30 分钟,窗口将自动关闭并重置数据库中的一些标志。 我设置了包含时间的 cookie(他打开弹出窗口的时间),并在每
由于某种原因,Jenkins 一直停止工作,我必须重新启动 jenkins 服务才能使其再次工作。每次发生这种情况时,服务都是“事件(退出)”,但日志中没有任何内容。我使用 Ubuntu 16.04。
我有一个幻灯片,需要单击它才能转到下一个图像/视频。但是,我想自动执行此操作,因此不需要任何用户事件。 页面如下所示: Slide 1 Slide 2 Slide
我正在使用 C# 应用程序来验证和检查位于 Window 2008 64 位服务器上的 Active Directory 用户。 使用以下代码提供用户名和密码时,我能够成功验证用户:我的域名值为 ro
这个问题在这里已经有了答案: Is there a CSS parent selector? (33 个答案) 关闭 9 年前。 有没有办法根据类中子元素的类来选择父元素?与我相关的示例是关于 ht
我正在尝试连接到 API,对用户进行身份验证,然后查看用户详细信息。这是通过首先访问登录端点来完成的 http://api.example.com/login// 登录然后查看用户详细信息: http
我正在尝试连接到 API,对用户进行身份验证,然后查看用户详细信息。这是通过首先访问登录端点来完成的 http://api.example.com/login// 登录然后查看用户详细信息: http
我是一名优秀的程序员,十分优秀!