使用 Javascript HTTP 请求登录站点?

Logging Into Site Using Javascript HTTP Request?

我正在尝试使用 http 请求和解析登录到我的 nike 帐户。这是我的要求:

Parse.Cloud.httpRequest({
      method: 'POST',
      headers: {
        'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
      },
      url: 'https://www.nike.com/profile/login',
      params: {
          'Content-Locale' : 'en_US',
      },
      body: {
          'login' : <userId>,
          'rememberMe' : 'true',
          'password' : '<password>'
      }
    }).then(function(httpResponse) {

      //Log
      console.log(httpResponse.text);
    }, function(httpResponse) {

      //Log
      console.error('Request failed with response code ' + httpResponse.status);
});

我正在使用 rest 来调用我的函数,它工作正常。唯一的问题是它不断返回 403 错误。我的请求有什么问题吗?

这是我在通过浏览器登录时在 Safari 中发现的实际请求的所有信息(注意:我是 http 请求的新手)。

更新:

上图是使用网络浏览器进行的有效登录。

此外,这里有一张请求和响应部分的图片以了解更多详细信息:

如果您一直看到 403 - Forbidden 响应,我认为您的请求结构没有任何问题。这意味着您的请求因 cross-origin 限制、不当或意外请求 headers and/or 欺骗您的推荐人和来源等原因而被拒绝。

但由于不知道耐克登录服务的细节,我们只能推测。

如果您的请求存在根本性错误,我希望看到其他 HTTP 响应,例如 400 Bad Request406 Not Acceptable500 Timeout 等。

为了正确回答,我们需要了解有关您发出请求的环境的更多详细信息。这是本地服务器吗?您是可以访问内部 nike.com 环境的 Nike 开发人员吗?这个 HTTP 请求是从哪里发起的?

根据所提供的信息,我能建议的最好的是一些有助于进一步排除故障的工具:

  • Charles Proxy:监控所有传出请求+响应
  • Postman:以更纯粹的方式方便地测试请求结构,browser/tech不可知的方式

我还不能 post 超过 2 个链接,但搜索 cross origin accesshttp status codes 以获取有关一般 HTTP 请求的更多详细信息。

如 rkd 所说,403 是禁止的。服务器拒绝您的请求。我认为这不是 cross-origin 限制,因为在第二张图片中出现 Access-control-allowed:true。检查是否设置了以前的 cookie。查看第一张图片,在 headers 中是否有 "set-cookie" 并且它的值。但无论如何,需要更多关于 headers 的信息才能做出更好的回应。