`
yourenyouyu2008
  • 浏览: 286826 次
  • 性别: 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

 

分享到:
评论

相关推荐

    java 版Url转换工具,可得到真实的URL

    Java URL转换工具是一种用于解析和处理URL的程序,它能够帮助开发者获取URL背后的真实地址,尤其是在面对重定向、参数编码等情况时。在Web开发中,URL(Uniform Resource Locator)是互联网资源的统一地址,它包含了...

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

    实现动态加载二级域名通常需要服务器端的支持,例如使用DNS(域名系统)动态解析或配置,以及编程语言中的路由规则设定。在.NET环境中,可以通过IIS的URL重写规则或自定义中间件来实现;在Node.js中,可以使用...

    JavaScript重定向URL参数的两种方法小结

    JavaScript重定向URL参数是网页开发中常见的操作,主要用于在页面跳转时传递数据。本文将详细介绍两种使用JavaScript实现URL重定向并携带参数的方法。 一、字符拼接形式 这种方法是通过解析当前URL,检查参数是否...

    springmvc 第二个例子(接收表单参数+重定向)

    在这个“springmvc 第二个例子”中,我们将探讨如何通过Spring MVC接收表单参数并执行重定向。 首先,让我们理解接收表单参数的过程。在Web应用中,用户通常通过HTML表单提交数据。Spring MVC提供了一个强大的机制...

    Apache Rewrite Module 的重定向问题

    ### Apache Rewrite Module 重定向问题解析 #### 一、Apache Rewrite Module 概述 Apache的Rewrite Module(重写模块)是Apache服务器中一个非常强大的工具,主要用于URL重写及重定向功能。它通过一系列规则对请求...

    spring mvc重定向导致内存溢出解决方案

    - **重定向URL长度限制**:浏览器和服务器对URL长度都有一定的限制。过长的URL不仅可能导致客户端无法正确解析,也会增加服务器处理的负担。 - **服务器资源消耗**:每处理一次重定向请求,都需要分配内存来存储URL...

    URLRewriting 重定向

    4. **迁移和重定向**:URL重写使得更改网站结构时可以轻松地重定向旧链接到新位置,避免断链问题。 四、高级用法 除了基本的URL重写,ASP.NET还支持更多的高级功能,如参数传递、正则表达式匹配等。例如,我们可以...

    Python-基于Python的缩址PyURLShortener是供Flask应用中对URL缩址以及重定向支持

    **Python-基于Python的缩址PyURLShortener:Flask应用中的URL短链与重定向** 在Web开发中,有时我们需要将长的URL缩短,以便更方便地分享或存储。`PyURLShortener`就是这样一款Python库,它为Flask应用提供URL缩址...

    Nginx 根据URL带的参数转发的实现

    在介绍具体配置方法之前,我们先来了解一下Nginx的转发机制以及URL参数的含义。 首先,了解Nginx的基础转发机制是非常必要的。Nginx通过配置文件中的location指令来定义不同的请求匹配规则,并且可以对这些规则应用...

    一个非常健全的 Javascript 链接(URL)解析类

    一个健壮的URL解析器能够帮助开发者轻松地提取URL中的各个组成部分,如协议、主机名、端口、路径、查询参数等,从而实现更高级的功能,如重定向、构建动态链接或处理API请求。本文将深入探讨一个名为`Poly9.URL...

    获取url参数,方便开发

    在实际应用中,获取URL参数通常是为了实现动态加载数据、页面重定向、用户个性化设置等功能。例如,你可以根据参数来决定加载哪个页面段,或者将参数作为API调用的数据源。确保正确、安全地处理URL参数是开发高效Web...

    Springboot转发重定向实现方式解析

    Springboot 转发重定向实现方式解析 Springboot 转发重定向是指在 Springboot 框架中,如何实现请求的转发和重定向。下面将详细介绍 Springboot 转发重定向的实现方式。 一、Springboot 转发 在 Springboot 中,...

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

    例如,给出的PHP源码中包含了一个名为`getrealurl`的函数,该函数通过发送HTTP头请求获取经过301或302重定向后的实际URL。用户可以通过输入`link?url=`形式的链接,然后程序会返回解密后的实际URL。 总的来说,百度...

    SSM笔记-SpringMVC自定义视图及重定向视图、语言国际化

    在SpringMVC框架中,视图解析和重定向视图是关键组成部分,它们负责将处理结果展示给用户。此外,语言国际化的支持使得应用程序能够适应全球不同地区的用户需求。接下来,我们将深入探讨这三个主题。 首先,...

    URL重写URL重写URL重写URL重写

    这通常由URL重写引擎完成,引擎会解析请求URL,根据预设的规则进行替换或者重定向,从而实现URL的变换。 二、URL重写的目的 1. **SEO优化**:搜索引擎更容易理解并索引清晰、有意义的URL,有助于提高网站排名。 2....

    cpp-Nginx静态资源重定向模块

    1. **配置解析**:模块需要在配置文件中声明并接收参数,如目标服务器地址、路径映射规则等。这通常涉及到解析`nginx.conf`中的指令,并将它们存储在结构体中供后续使用。 2. **重写阶段**:在Nginx的请求处理流程...

    IIS 7中如何实现http重定向https

    IIS 7中实现HTTP到HTTPS的重定向知识点详细解析: 在互联网安全日益重要的今天,使用HTTPS协议来保证网站数据传输的安全性已经变得尤为重要。HTTPS协议相比HTTP协议,通过SSL/TLS加密了客户端与服务器之间的通信,...

    urlrewrite 完整实例,可直接运行。支持多个参数传递

    在Java Web开发中,它经常与Apache Tomcat服务器配合使用,通过配置规则来实现动态URL到静态URL的映射,以及对URL进行各种操作,如添加、修改或删除请求参数。以下是对`URLRewrite`的详细解释和使用实例: 一、URL...

    HttpClient完整实例(普通参数、JSON格式参数)

    在HttpClient中,我们可以通过`HttpPost`类创建一个POST请求对象,然后设置请求的URL和参数。 1. 创建`HttpPost`对象:`HttpPost httpPost = new HttpPost("http://example.com/api");` 2. 添加普通参数:使用`...

Global site tag (gtag.js) - Google Analytics