jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JQuery jsession cookie未发送到服务器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
搜索jquery论坛,stackoverflow,谷歌,bing,甚至雅虎没有成功.
每隔10秒我就会尝试通过这个 @L_450_2@片段从logservlet servlet加载文本数据:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
            var autorefresh = seTinterval(function () {
                $.ajax({
                    url : "logservlet?devkey=chat",success : function(data) {
                        $("#log_ta").append(data);
                    }
                });
                },10000);
    </script>

问题是,在服务器端,我没有看到有效的会话,我试图跟踪会话属性.问题似乎与在JQuery的http请求的标头中缺少“Cookie JSESSIONID = xxxxxxxxxxxxxxxxxxxxxxxxxxx”有关.我从服务器获得响应头,JSESSIONID总是随每个请求而变化:

Server  Apache-Coyote/1.1
    Set-Cookie  JSESSIONID=9EEAFA2A933E7742D8FEDADD5345B76D; Path=/CumulusServer
    Content-Length  0
    Date    Fri,23 Mar 2012 13:02:08 GMT

但是JQuery后来没有使用它,这里是请求头:

Host    192.168.1.11:8080
    User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
    Accept  */*
    Accept-Language en-us,en;q=0.5
    Accept-Encoding gzip,deflate
    Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection  keep-alive
    X-requested-With    XMLhttprequest
    Referer http://192.168.1.11:8080//CumulusServer/

这有什么问题? “$.ajax”调用不会识别会话吗?或者,我是否会错过一些管道代码来在每个ajax请求中手动硬编码JSESSIONID?是这样,这应该怎么样?顺便说一句,当我从网络浏览器调用相同的URL时,JSESSIONID标头被发送到服务器!

谢谢,
D.

解决方法

事实上,我确实运行Adblock Plus,(感谢提示),但它与此无关.
实际上这件事有点棘手.我找到了两个解决方案,但我没有解释发生了什么.

解决方案#1: – 在页面加载时手动保存JSESSIONID:

var Session = {
       id : '${pageContext.session.iD}',user : '${pageContext.request.remoteUser}'
    };

    $(window).load(function () {
        setCookie('JSESSIONID',Session.id);
    });

    function setCookie(name,value,expires,path,domain,securE) {
        var cookieString = name + "=" +escape(value) +
           ( (expires) ? ";expires=" + expires.toGMTString() : "") +
           ( (path) ? ";path=" + path : "") +
           ( (domain) ? ";domain=" + domain : "") +
           ( (securE) ? ";secure" : "");
        document.cookie = cookieString;
    }

这工作正常,JSESSIONID相应地在下一个ajax请求中发送.

解决方案#2: – 在servlet doGet()方法添加“text / plain”mime类型.
最初在我的测试中,我根本没有设置任何内容类型.在我意识到JQuery认需要XML响应之后,我改变了我的服务器doGet()方法来显式设置内容类型,如下所示:

resp.setContentType( “text / plain的”);

现在,ajax调用工作正常,实际上不需要手动cookie管理.我没有解释为什么解决方案#2有效,但确实如此.

谢谢,D.

大佬总结

以上是大佬教程为你收集整理的JQuery jsession cookie未发送到服务器全部内容,希望文章能够帮你解决JQuery jsession cookie未发送到服务器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。