javascript - 可以修改 jQuery ajax 请求中的 cookie 值吗?

标签 javascript jquery http cookies google-chrome-extension

我正在开发一个 Chrome 扩展程序,允许用户记录站点的所有 HTTP 请求,修改请求的片段,然后重新发送。

我希望使用 jQuery's ajax method构建并发送修改后的请求。我已经能够构建请求的其他部分,但据我所知,没有办法在请求中包含 cookie 值。

需要说明的是 - 我不是要在浏览器上创建 cookie,我是要修改将作为 HTTP 请求的一部分使用 jQuery 的 ajax 方法发送的 cookie 值。

这可以用 jQuery 的 ajax 来完成吗?如果没有,有没有办法用 javascript 来做?

最佳答案

既然你在谈论 Chrome 扩展,你可以使用 webRequest API拦截和修改您的请求。

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    /* Identify somehow that it's a request initiated by you */

    for (var i = 0; i < details.requestHeaders.length; i++) {
      if (details.requestHeaders[i].name === 'Cookie') {
        /* Do something with it */
        break;
      }
    }

    /* Add the Cookie header if it was not found */

    return {requestHeaders: details.requestHeaders};
  },
  {urls: ["*://*.example.com/*"]}, 
  ["blocking", "requestHeaders"]
);

这样您就可以在不实际修改浏览器的 cookie 存储的情况下修改 cookie。 我说“应该”是因为我还没有测试过这个解决方案。

一些要点:

  • 您将需要权限:"webRequest""webRequestBlocking" 和主机权限(对于此示例,"*://*.example.com/")
  • 需要注意的是,您不能拦截自己的同步请求,以防止出现死锁。只要您的 AJAX 是异步的,就没有关系。
  • 如果您需要阻止 Set-Cookie 响应到达 cookie 存储区,您可以通过修改 onHeadersReceived 中的响应 header 来实现。您可以使用请求 ID 找到相应的响应。

关于javascript - 可以修改 jQuery ajax 请求中的 cookie 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813340/

相关文章:

Javascript 从表中的选定选项获取数据属性

android - 未知 Chrome 错误 : -6 (jquery mobile)

java - 为什么 PoolingHttpClientConnectionManager 提供越来越慢的连接?

javascript - 显示模态时未触发 Twitter Bootstrap 模态事件

javascript - 如果在 React.js 中更新状态后元素具有相同的类,动画将不起作用

javascript - SetInterval 只重复一次。如何解决?

jquery - 地理编码 + 自动完成 + Rails

javascript - 窗口大小调整后 HTML5 Canvas 被阻止

java - 改造查询参数

java - @Consumes(MediaType.APPLICATION_FORM_URLENCODED) FormParameter 为空