Javascript 可以在jQuery ajax请求中修改cookie值吗?
我正在开发一个Chrome扩展,它允许用户记录一个站点的所有HTTP请求,修改请求片段,然后重新发送 我希望使用来构造和发送修改后的请求。我已经能够构造请求的其他部分,但据我所知,没有办法在请求中包含cookie值 需要明确的是,我并不是试图在浏览器上创建cookie,而是试图使用jQuery的ajax方法修改cookie值,该值将作为HTTP请求的一部分发送Javascript 可以在jQuery ajax请求中修改cookie值吗?,javascript,jquery,http,cookies,google-chrome-extension,Javascript,Jquery,Http,Cookies,Google Chrome Extension,我正在开发一个Chrome扩展,它允许用户记录一个站点的所有HTTP请求,修改请求片段,然后重新发送 我希望使用来构造和发送修改后的请求。我已经能够构造请求的其他部分,但据我所知,没有办法在请求中包含cookie值 需要明确的是,我并不是试图在浏览器上创建cookie,而是试图使用jQuery的ajax方法修改cookie值,该值将作为HTTP请求的一部分发送 这可以通过jQuery的ajax实现吗?如果没有,是否还有其他方法可以在javascript中实现 使用jQuery.ajax()在任何
这可以通过jQuery的ajax实现吗?如果没有,是否还有其他方法可以在javascript中实现 使用
jQuery.ajax()
在任何地方都不可能做到这一点
XMLHttpRequest
不允许修改Cookie头(),而jQuery.ajax
在引擎盖下使用XMLHttpRequest
在javascript中直接使用XMLHttpRequest
也有同样的问题,因此没有帮助
您可以将cookie添加到当前文档中,并告诉jQuery告诉XHR使用xhrFields:{withCredentials:true}
跨域发送cookie,但目标站点还必须具有相应的CORS设置,这听起来与您的用例不匹配
如果您想尝试,请参阅以下资源:
(寻找xhrFields)既然您谈论的是Chrome扩展,您可以使用它来拦截和修改您的请求
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"]
);
chrome.webRequest.onBeforeSendHeaders.addListener(
功能(详情){
/*以某种方式确定这是您发起的请求*/
对于(var i=0;i
通过这种方式,您应该能够修改cookie,而无需实际修改浏览器的cookie存储。我说“应该”,因为我还没有测试这个解决方案
一些要点:
- 您需要权限:
、“webRequest”
和主机权限(在本例中,“webRequestBlocking”
)“*://*.example.com/”
- 有一个警告,您不能拦截自己的同步请求,以防止死锁。只要您的AJAX是异步的,它就不重要了
- 如果需要防止响应到达Cookie存储区,可以通过修改
中的响应标题来实现。您可以使用请求ID查找相应的响应onHeadersReceived
Chrome.devtools.network.onRequestFinished
事件,当请求完成并包含请求的内容时触发。有两种类型的cookie,一种是javascript引擎可以访问的,另一种是它不能访问的。在一个完整的http请求中,两种类型都被发送。我相信您需要使用jquery以外的其他工具来执行任务。有趣的是,可以用纯javascript完成吗?或者您是否认为jQuery和纯javascript都不具备这种能力?