【问题标题】:Server-Side JavaScript: HTTP GET with cookie?服务器端 JavaScript:带有 cookie 的 HTTP GET?
【发布时间】:2011-06-09 19:21:01
【问题描述】:

我有一个用 JavaScript 编写的 UI 自动化脚本。从该脚本中,我如何对带有 cookie 的 URL 执行 GET 请求?例如:

curl "https://example.com/path?a=123&b=cool" --cookie "c=12"

或者,如果您知道如何从 JavaScript 运行系统命令,就像在 Ruby 中一样,那也可以。

【问题讨论】:

  • 对于那些不知道 curl 命令行选项的人来说,解释一下你的 curl 调用实际上做了什么会很好。 ;)
  • man curl。然后,输入/ 进行搜索。然后,输入-b 并回车。您将看到:-b/--cookie <name=data> (HTTP) Pass the data to the HTTP server as a cookie。我更新了问题以使其更清楚。

标签: javascript unix curl xmlhttprequest system


【解决方案1】:

请参阅this thread,了解使用 jQuery 在浏览器中设置 cookie。

【讨论】:

  • 对不起,我不确定该线程的相关性。我在问如何将带有 cookie 的 GET 请求发送到带有 JavaScript 的 URL。而且,JavaScript 由 Mac Developer Tools : Instruments 运行,而不是由浏览器运行。
【解决方案2】:

查看HTTP GET request in JavaScript? 并阅读"3.6.2. The setRequestHeader() method" in the W3C specs for XMLHttpRequest 的第7 步后,我想出了:

function httpGet(url, opts={}) {
  var client = new XMLHttpRequest();
  client.open('GET', url, false); // not async
  if (opts.cookie) {
    client.setRequestHeader('Cookie', opts.cookie);
  }
  client.send();
}

仅供参考,我忽略了响应,因为我正在删除一个资源(也许我应该验证正确的响应,以便我知道该资源已被删除)。所以,是的,这应该是一个 DELETE 请求,但他们将服务器配置为接受 GET 请求,而我无法控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多