【问题标题】:Issue in accessing API Session of a Server in C# format using NodeJS使用 NodeJS 以 C# 格式访问服务器的 API 会话的问题
【发布时间】:2025-12-12 15:35:01
【问题描述】:

基本上,我正在使用来自公司的一组给定 API 构建网站。从这里,我不能访问或更改给定的 API。

API 类似于下面的代码

http://domainname.com/data.aspx?action=login

使用该 API,我能够通过使用用户名和密码执行 POST 请求来成功返回 true 或 false。

接下来,我正在尝试获取具有相似给定 URL 的用户的详细信息

http://domainname.com/data.aspx?action=user_details

在上面的 API 中,它正在检查 Session["username"]。这就是我的问题出现的地方

就我而言,我正在使用 nodejs。

var request = require('request');

var postData = {
    'username': 'example',
    'userpass': 'abc123',
};

request.get({url:'http://domainname.com/data.aspx?action=login', formData:postData}, function(err,httpResponse,body1){ 
    console.log(body1);
    request.get({url:'http://domainname.com/data.aspx?action=user_details'}, function(err,httpResponse,body2){ 
        console.log(body2);
    })
})

body1 的第一个 console.log 结果:true

body2的第二个console.log结果:[](空数组)

为了确保 API 工作正常,我使用了 Google Chrome 的 POSTMAN 扩展。首先,我登录用户,然后运行 ​​user_details API,然后它会从那里返回用户的详细信息。

我到底错过了什么?

【问题讨论】:

  • 也许他们将用户数据保存在 cookie 中。所以它与邮递员一起工作,但不是与请求一起工作。可以查一下吗?
  • @Ygalbel,我已经使用 user_details API 检查了 POSTMAN 的 cookie。它没有任何用户名
  • 他们是否保留在 Cookie SessionId 中?

标签: javascript c# node.js api request


【解决方案1】:

默认情况下,Asp.net 保留名为 sessionId 的 cookie, 所以你必须用“请求”启用cookie。

Cookieless SessionIDs 默认情况下,SessionID 值存储在 浏览器中的非过期会话 cookie。但是,您可以指定 会话标识符不应通过设置存储在 cookie 中 的 sessionState 部分中的 cookieless 属性为 true Web.config 文件。

正如Request 文档中所说, 默认情况下禁用 Cookie。

这是他们文档中的引述:

默认情况下禁用 Cookie(否则,它们将用于 后续请求)。要启用 cookie,请将 jar 设置为 true(在 默认值或选项)。

var request = request.defaults({jar: true})
request('http://www.google.com', function () {  
request('http://images.google.com') })

启用 cookie 后,它将像邮递员和 chrome 一样工作。

【讨论】:

  • 哦!我应该检查一下。 Ygalbel,你是救生员。谢谢!现在可以了。