为什么我写的代码中getRequest()获得的是本页面的url,而不是请求页面的url? 400 报错
在配置微信JS-SDK接口的时候,需要在后台动态获得发送请求的页面的url(http://localhost:8080/ConnectTest/GetData.jsp),但我用getRequestURL得到的却是后台文件的地址(http://localhost:8080/ConnectTest/sign),ps:使用过request.getAttribute("javax.servlet.forward.request_uri")但返回的url为null。
请大手帮忙看看,今天弄了10多个小时都没弄出来,有点崩溃╮(╯﹏╰)╭
代码如下:
GetData.jsp:
<script>
$(document).ready(function(){
$.ajax({
//提交数据的类型 POST GET
type:"Get",
//提交的网址
url:"http://localhost:8080/ConnectTest/sign",
//提交的数据
/* data:form, */
datatype:"json",
success:function(data){
var obj = JSON.parse(data);
var jsonstr = JSON.stringify(obj);
var jsary = eval('('+jsonstr+')');
alert(jsary.url)
alert(location.href.split('#')[0])
wx.config({
debug: true,
appId: 'wx51b7336a2b1cd2d9',
timestamp: 'jsary.timestamp',
nonceStr: 'jsary.nonceStr',
signature: 'jsary.signature',
jsApiList: [
"wx.onMenuShareTimeline"
]
});
wx.ready(function(){
//share to timeline
wx.onMenuShareTimeline({
title: '百度', // 分享标题
link: 'www.baidu.com',
imgUrl: 'https://www.baidu.com/img/bd_logo1.png', // 分享图标
success: function () {
alert("分享成功")
},
cancel: function () {
alert("分享失败")
}
});
});
}
});
});
</script>
Sign.java(http://localhost:8080/ConnectTest/sign):
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String jsapi_ticket = "kgt8ON7yVITDhtdwci0qeXxjVFn7AZ9I21TkQnlxXoQF3VTPc5tRORpvuB_slLD-Xua5sSwuBOrO5ZfMNGJUTA";
String url = request.getRequestURL().toString()+"/";
System.out.println(url);
Map<String, String> ret = sign(jsapi_ticket, url);
sendScResponse(ret, response);
} catch (Exception e) {
e.printStackTrace();
}
}
<-- 中间省略一些不重要的代码-->
private void sendScResponse(Object obj, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/javascript; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
if (obj != null) {
String responseStr = m_gson.toJson(obj);
response.getWriter().write(responseStr);
}
}
你干嘛要后台再去获得,你直接传回去不就可以了
而且就算要获得也是要获得来源链接 request.getHeader("referer");
######我在后台获取是为了动态获得发起请求的url,貌似getRequestURL用错了,我去试试getHeader######你请求的地址就是/sign没问题啊
######我在GetData.jsp中向./sign发送请求,在./sign中用gerRequest()是去抓取发送请求的url(也就是GetData.jsp)的(╯︵╰)######没问题啊,你是从GetData.jsp发送的请求,gerRequest()获取的就是请求来源的url
######回复 @木有龙井茶 : 解决了,getRequestULR获取的是请求中的地址,而不是请求发起页的地址......######呃,我好像说错了,明天查查资料######那我应该获得的url是http://localhost:8080/ConnectTest/GetData.jsp啊,但我得到的是http://localhost:8080/ConnectTest/sign######从 refer 头里面拿吧
######恩 我试试######问题已解决,request.getRequestURL获取的是请求的地址,而不是请求发起页所在的地址,如果想获得请求发起页所在的地址(也就是上一个请求的url),可以用request.getHeader("Referer")来获取。
把结果写在这里,希望以后不会有新人掉到这个坑里ヽ( ̄▽ ̄)ノ
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。