`
yourenyouyu2008
  • 浏览: 282300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

重定向url中带参数问题,以及http 参数解析

    博客分类:
  • http
 
阅读更多

进入一个页面处理完后还要返回到进入的页面,常见场景是 1)登陆重定向 2)从不同的入口进入公共页面,处理完成后返回到进入的页面。

 

下面链接会进入到公共上传页面,完成后返回activity/moke/toStep?activityId=234&tempStepId=33&index=2

<a

href="/activity/moke/to_uploadFile?activityId=234&actStepId=185&redirectParam=activity/moke/toStep?activityId=234&tempStepId=33&index=2"

class="blue">提交教案</a>

 

在上传页面内通过hidden记录要返回的页面

 <input type="hidden" name="redirectParam" value="${redirectParam }" />

上传页面提交后直接重定向到redirectParam即可。

.....

return "redirect:/"+redirectParam;

 

 

存在的问题是:在后台request中获得redirectParam参数只能获取部分参数,后面的tempStepId=33&index=2参数丢失了。这样导致上传页面内hidden redirectParam中只有部分参数,这样重定向后的页面参数就不对了。<input type="hidden" name="redirectParam" value="。。。activityId=234" />

&tempStepId=32&index=1这两项丢失了

 

解决办法:将redirectParam的全部值编码,变成如下形式

redirectParam=。。。activityId%3D234%26tempStepId%3D32%26index%3D1

这样后台就将这个值当做一个整体来处理,生成上传页面内的hidden redirectParam中包含全部的参数,示例如下<input type="hidden" name="redirectParam" value="。。。activityId=234&tempStepId=32&index=1" />

input中的内容也会当做一个整体来处理,这样获取redirectParam的值后重定向就正确了。

 

在freemarker中使用自定义函数来编码

<#assign urlEncode="cn.com.teacher.cistus.dt.common.freemarker.url.UrlEncode"?new()>

<a href="。。。。&actStepId=${step2.id}&redirectParam=${urlEncode(redirectParam)}"

 

import jodd.servlet.URLCoder;

public class UrlEncode implements TemplateMethodModel{
    @Override
    public Object exec(List arguments) throws TemplateModelException {
        String rulParam=(String) arguments.get(0);
        return URLCoder.encodeQuery(rulParam);
    }
}

总结:url中的&符号会被当做参数分割符,将&转码后就不是参数分割符了,而input中的&按普通字符来处理,并且转码后的&输出到页面时会自动变回成&。

也可以通过标准的js方法encodeURIComponent来将url中多个参数编码

http://cas.teacher.com.cn/logincheck?sub=1&f="+encodeURIComponent('a=1&b=2&c=3')

这样后台获取到f的值是a=1&b=2&c=3

 

分享到:
评论

相关推荐

    URL重定向,动态加载二级域名

    URLRewriter 当用户注册账号,后台审核,会为用户动态生成一个二级域名网站,

    解析百度搜索结果link?url=参数分析 (全)

    自从9月后百度和360开战的结果就是 百度搜索结果的网址改变了,变成link?url=………这样的重定向格式了。看到这样的不友好的URL真有破解的冲动。于是今天开始试试破解它

    Nginx下无法使用中文URL的解决方法

    在Apache中,要实现对中文的支持需要单独加载中文模块,而Nginx是支持多种编码不需要安装其他组件的,只是默认是走UTF-8的支持路线。这里提供两种方法实现Nginx对中文URL的支持。 方法一 利用convmv对文件名转码 此...

    resolver:使用node.js解析URL

    向其提供源URL,如果发生任何重定向,解析器将返回目标URL。 例如 http://bit.ly/PWoeXs 将解决成 http://www.andrisreinman.com/post/15668406504/eesti-saitide-kodeeringud 此外,如果最终网址中包含Google ...

    java项目源码之UrlRewriter Java v2.0 RC1-urlrewriterjava.rar

    UrlRewriter Java v2.0 RC1 是一个基于 Java 的 URL 重写工具,旨在帮助开发人员实现灵活的 URL 重定向和重写功能。以下是该工具的主要实现描述: 核心功能实现: 使用 Java 编程语言实现了 URL 重写核心功能,...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    但是URL重写,并且,将一个带假目录的虚拟地址重写到一个不带假目录的页面时,由于浏览器客户端和服务端此时的当前页面计算方法是不同的,就会发生相对路径的匹配错误问题!真实很严重的问题啊! 解决的办法,只有...

    Url Editor PRO-crx插件

    功能: * Parse URL并易于浏览字段的块 *自动或手动重定向 *自动刷新 *手动和自动URL编码/解码参数 * Base64 Params编码/解码 *自动建议功能 *建议经理(在选项页面上) *排序参数(易于找到您正在寻找的参数) *...

    网址编辑器PRO「Url Editor PRO」-crx插件

    Url解析器,使编辑复杂的URL尽可能简单。功能:params解码,自动提示,键盘导航 特征: *解析网址,并显示其块在易于导航领域 *自动或手动重定向 *手动和自动的url编码/解码参数 * Base64 params编码/解码 *自动建议...

    CURL用法大全

    无法解析在227行中获取的主机IP。 17:FTP无法设定为二进制传输。无法改变传输方式到二进制。 18:部分文件。只有部分文件被传输。 19:FTP不能下载/访问给定的文件, RETR (或类似)命令失败。 21:FTP quote错误。quote...

    citrix 中文管理操作手册

    在 Access Management Console 中显示项目 27 使用检测过程指定多个服务器场进行控制台管理 27 针对多个产品或组件运行检测过程 28 针对单个产品或组件运行检测过程 28 1.2.10. Access Management Console 用户界面 ...

    动易专业版——Upgrade_SiteFactory.Professional_2.5.2.0-2.5.3.0的升级包

    ●URL重定向时分页标签链接地址不正确。 ●会员中心会员显示头像区域没有判断头像路径格式造成显示不正确。 ●多语言下、非中文操作系统下不能正确的读取设定的模板路径。 模板标签: ●前台专题首页点击专题...

    C++网络爬虫项目

    在此之后,搜索引擎会对网页进行解析,抽取网页主体内容,以及页面中包含 的指向其它页面的所谓超链接。 为了加快用户查询的响应速度,网页内容通过 “倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系...

    Slasher-crx插件

    语言:English (United States)显示并允许更轻松地编辑url和参数使编辑复杂的URL变得容易。Slasher将解析现有选项卡的URL,并将其拆分为多个部分。零件可单独编辑,并可另存为自定义标记。定制令牌可以作为JSON文件...

    Python Cookbook

    11.13 在Tkinter中实现一个带标签的记事本 429 11.14 使用wxPython实现带面板的记事本 431 11.15 在Jython中实现一个ImageJ插件 433 11.16 用Swing和Jython来通过URL查看图片 434 11.17 在Mac OS中获得用户输入 ...

    asp.net知识库

    帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    本书中的秘诀演示了开发和测试人员在进行单元测试、回归测试或探索性测试的同时,如何去检查最常见的Web安全问题。与即兴的安全评估不同的是,这些秘诀是可重复的、简洁的、系统的——可以完美地集成到你的常规测试...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    poster:节点模块,用于通过多部分上传本地远程文件

    海报 异步节点模块,用于通过多部分上传本地/远程文件。... downloadFileName :如果提供,它将覆盖从URL解析的文件名。 maxRedirects :放弃下载文件之前允许的重定向总数。 默认为5 。 downloadH

    EL表达式 (详解)

    ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话 范围内的变量.applicationScope...

Global site tag (gtag.js) - Google Analytics