如何使用jqGrid发送凭据
How to send credentials with jqGrid?
我有一个配置为支持CORS的服务。通常,当我执行服务器请求时,我会通过jQuery
准备一个请求对象,并将withCredentials
参数集添加到true
,它可以正常工作。
但是我有一个带有服务器分页的jqGrid
,我不能完全管理xhr
对象。我已经添加了loadBeforeSend
事件,在该事件中我添加了一些头,并被正确地发送到服务器。
我还看到了这篇文章(与jQuery
ajax请求有关):可能的答案。我尝试通过以下方式将withCredentials
属性添加到xhr
对象中:
$('#grid').jqGrid({
loadBeforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Accept-Language', 'en-US');
jqXHR.setRequestHeader('SiteApplication', '1');
jqXHR.withCredentials = true;
}
});
甚至通过这种方式:
$('#grid').jqGrid({
loadBeforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Accept-Language', 'en-US');
jqXHR.setRequestHeader('SiteApplication', '1');
jqXHR.xhrFields = {
withCredentials: true
}
}
});
类似于帖子中解释的解决方案。但它没有起作用。
知道如何将cookie发送到服务器吗?
在深入研究了jQuery
和jqGrid
源代码之后,我已经在代码内部,在jQuery.ajaxTransport
函数中,jQuery
创建了一个本地XMLHttpRequest
javascript对象。这个对象是由一个名为"s"的本地对象在上述函数中创建的。
在此之后,该对象具有一个名为"xhrFields"的属性,该属性将动态地向标准xhr
对象添加新字段。在调试了该级别的代码后,我意识到jqGrid
的loadBeforeSend
事件中接收到的"settings"参数与创建请求对象的对象"s"相同。
总之,我已经修改了我的代码,将"xhrFields"属性添加到"settings"参数中,并且它正在工作。我的解决方案如下:
$('#grid').jqGrid({
loadBeforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Accept-Language', 'en-US');
jqXHR.setRequestHeader('SiteApplication', '1');
settings.xhrFields = {
withCredentials: true
}
}
});
通过这种方式,服务器请求将用户凭据(cookie)正确发送到服务器,我很高兴避免使用其他解决方案,如在其他帖子中看到的那样,在cookie中添加自定义标头。
更新:@Oleg为我的问题发布了更好的解决方案。尽管我的答案有效,并且可以帮助任何有类似问题的人,但对于这种特定情况,修改ajaxGridOptions
并将"xhrFields"属性添加到此属性更为优雅(我认为)。
所以代码应该是这样的(非常概括,我在创建时省略了网格的其余属性):
$('#grid').jqGrid({
loadBeforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Accept-Language', 'en-US');
jqXHR.setRequestHeader('SiteApplication', '1');
},
ajaxGridOptions: {
xhrFields: {
withCredentials: true
}
}
});
我已经意识到不需要crossDomain: true
。
- 使用jqGrid列格式化程序函数使ng-click工作
- 我可以使用jqgrid的oncellselect事件根据单元格内容将文本颜色更改为蓝色吗
- 如何使用jqGrid发送凭据
- 在jqgridJS之上使用jqgrid PHP的安全优势
- 使用jqGrid的最低jQuery版本
- 如何使用 jqGrid editoptions 值的函数创建有效的字符串
- 如何在编辑行调用中使用 jqGrid 单元格编辑进行滚动
- Jquery:使用jqgrid将数据w.r.t页面保存在客户端
- 如何使用 jqGrid、多选和 Spring 序列化删除数据
- 想要使用jqgrid获取回车键来触发搜索
- 如何使用jqGrid将JSON发送到服务器
- 在动态加载的html上使用jqgrid
- 使用Jqgrid和Ajaxfileupload上传文件
- 如果使用jqgrid中的内联添加按钮添加行,如何设置默认值
- JqGrid如何使用JqGrid JS与PHP设置属性
- 使用jqgrid更新记录后选择行
- 如何从PHP创建jqGrid JSON错误响应,然后使用jqGrid javascript对其进行响应?
- 使用JqGrid在此单选列的所有网格行中相互排斥
- 在添加具有模态形式的新行时,使用jqGrid添加附加参数以发布数据
- 使用jqgrid将html表格转换为pdf