微信开发? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

微信开发? 400 报错

爱吃鱼的程序员 2020-06-03 16:14:46 65

微信开发? 400 报错

微信开发,第一次请求后台的时候,会报一个这样的错误。重新发送请求的时候,又可以请求到后台。然后重启微信的开发者工具的话,同样的情况会再出现。有大神遇到过这样的情况吗?--------求解

分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-03 18:03:27

    http://blog.csdn.net/wilsonke/article/details/38704005

    ######

    jsessionid所引起的问题

    spring MVC当使用RedirectView或者"redirect:"前缀来做重定向时,Spring MVC最后会调用:
    response.sendRedirect(response.encodeRedirectURL(url));

    对于IE来说,打开一个新的浏览器窗口,第一次访问服务器时,encodeRedirectURL()会在url后面附加上一段jsessionid,如果初始的url为"http://www.sina.com.cn",最终得到的url为"http://www.sina.com.cn;jsessionid=2jcligmgi6fh"。

    这是典型的Java做事的方式,其他语言的服务器端平台并不会这样做。这个jsessionid很多时候会引起严重的问题,例如,如果你使用上述带有jsessionid的url直接访问新浪的网站,IE会向你报告:找不到服务器。

    解决方法:
    1. 不通过Spring MVC做重定向,自己直接调用:
    response.sendRedirect(url);
    return null; //告诉Spring MVC我已经完成了处理

    2. 修改Spring MVC的代码,将:
    response.sendRedirect(response.encodeRedirectURL(url));
    改为:
    response.sendRedirect(url);

    3. encodeRedirectURL()仅在无法确定浏览器是否支持cookie的时候才会在url后面附加上jsessionid,如果它能找到一个jsessionid的cookie,它就认为浏览器是支持cookie的。因此可以自己创建一个jsessionid的cookie来欺骗encodeRedirectURL()。
    Cookie cookie = new Cookie("jsessionid", "2jcligmgi6fh");
    cookie.setMaxAge(Integer.MAX_VALUE);
    response.addCookie(cookie);
    然后再调用Spring MVC的重定向功能就没有问题了:
    return new ModelAndView("redirect:"+url);

    无疑,这里最好的方法是第3种方法。

     

    转向相同的域,因为之前服务器已经设置了jsessionid这个cookie,并且可以得到这个cookie,因此就不必像上面第一次那样采用url重写的方式,url后面不会附加上jsessionid。因此当你的应用只会转向相同的域时,直接使用Spring MVC的重定向(实际上是最后使用encodeRedirectURL())不会有任何问题。

    相关资料:
    Spring MVC RedirectView appends jsessionid:
    http://robobruin.blogspot.com/2005/12/spring-mvc-redirectview-appends.html

    JSESSIONID considered harmful:
    http://randomcoder.com/articles/jsessionid-considered-harmful

    Cookie和会话状态的工作原理及Cookie欺骗|Cookie,会话状态,Cookie欺骗:
    http://www.yuanma.org/data/2006/0908/article_1489.htm

    ######引用自:http://blog.csdn.net/wilsonke/article/details/38704005
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章