在ajax当中使用url重写来避免url的暴露
记得一次面试,有这样一道面试题:
jsp页面当中需要用到ajax的实现,此时需要调用java的url;此时的问题是如果用户查看页面源码就能看到真是的url,这个问题如何避免。
说实话,AJAX我用的只是皮毛,只会用js获取参数,然后传递给java应用程序,由应用程序来加工处理。如果有返回需求的话,可以以xml的方式返回数据。
自己使用的时候没有考虑过url暴露的问题,看到这个题目,当时没有了注意。下来想想,我自己的想到的实现方法是这样的,就是指定自己的一套规则,然后页面上写的url按照规则来组织,然后传到一个中间件上:这个中间件的功能就是解析这些url,得到最终的真实的url,然后由由这个中间件转到相应的请求上去处理。
最近听同学说,好像url重写可以更好的实现,就看了一下
1.下载urlrewrite,官方下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
2.将以下代码添加到web.xml里
Xml代码
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.建立一个 urlrewrite.xml
1<?xml version="1.0" encoding="utf-8"?>
2<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
3 "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
4<urlrewrite>
5 <rule>
<from>^/world/(.*)$</from>
<to>/world.jsp?tid=$1</to>
</rule>
9</urlrewrite>
rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.
在项目中新建world.jsp,启动tomcat,输入
http://localhost:8080/mysite/world/1
mysite是你的项目名
实际上访问的是http://localhost:8080/mysite/world.jsp?tid=1
这样就简单的实现了伪静态的效果
在ajax当中,var url = "";这个地方写个虚拟的访问路径,然后将解析规则用正则表示到urlrewrite.xml当中,那么到后台的时候,就可以自动解析成真实的路径,从而达到对url的保护。
在ajax当中使用url重写来避免url的暴露的更多相关文章
- [tp3.2.1]开启URL(重写模式),省略URL中的index.php
重写模式(省略url中的index.php) 在apache配置文件httpd.conf中,查找 1.mod_rewrite.so, 启动此模块 2.AllowOverride , 值= All 3. ...
- nginx的URL重写应用实例
1,NGINx的URL重写 NGINX 的URL重写模块用的比较多,主要使用的命令有if rewrite set break 2 if命令 语法如下"" 语法:if(conditi ...
- C# WebService URL重写
背景 有时候我们会有这样的需求,将 WebService URL 中的 asmx 后缀去掉:或者我们要模拟普通 Web 的 URL,接口名称直接拼接在 URL 中.这些情况我们都要用到URL重写. 关 ...
- ASP.NET Url重写
新建一个类,并实现IHttpModule接口 实现接口,在Init方法中处理请求,在请求方法中实现具体的Url重写操作 补充Url重写方法,通过 Request的Path对象获取请求文件路径,并根据请 ...
- URL重写案例
实现url重写的基本方法: 将下载的URLRewriter.dll,放到你的web程序的bin下 然后在web.config里配置如下: <?xml version="1.0&quo ...
- Url重写和伪静态
这里是URL重写的精华:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx感觉写的非常棒. 其实URL重写操作起来也是挺简单的,只要你在前台写好 ...
- URL重写 UrlRewrite
为什么要URL重写? 1.有利于SEO,带参数的URL权重较低: 2.地址看起来更正规,推广uid 伪静态:看起来像普通页面,而非动态生成的页面. 原理:在Global.asax的Applicatio ...
- nginx URL重写
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)
Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ...
随机推荐
- spinner中的onNothingSelected方法到底什么时候调用?
这个东东大家在开发中可能不太能用到,所以总是容易被忽略,由于工作原因,我最近琢磨了一下onNothingSelected方法的调用时机问题,其实很简单,只要我们稍微看一下源码就明白了: /** * C ...
- Android_Intent_passObject
方法4. 把基本的数据类型封装到一个对象中,然后通过intent传递该对象需要考虑对Person对象进行序列化 MainActivity: package com.example.day06_acti ...
- linux服务器下tomcat部署项目内存溢出
今天将一个项目部署到linux服务器上,结果tomcat在启动运行到一定时间后就报错.根据以往的经验,查了一些资料,终于解决了该问题并顺便解决了生产环境中的get方式中文传递乱码问题. tomcat启 ...
- access应用分享
我最近开发了一个winform项目,用的是access数据库,当开发成功以后,有些电脑上就能正常运行,有些电脑就无法读取数据库文件,刚开始我以为是权限问题,后来我把安装程序卸载了,装在其它盘中(非C盘 ...
- MVC小系列(二)【Razor 模板引擎】
Razor 模板引擎 Razor模板页:它使我们不用再使用master模板了 一 :@Url.Content:是可以加载CSS和JS等文件比如: <link href="@Url.Co ...
- [转] c# 数据类型占用的字节数
http://www.cnblogs.com/laozuan/archive/2012/04/24/2467888.html
- js页面之间函数调用
1.在父级页面调用子级页面的函数 当前页面(default.aspx)通过iframe嵌套index.aspx页面,在当前页面调用index.aspx里面的js函数,如下: myFrame.windo ...
- apparmor介绍
AppArmor AppArmor 类似于selinux ,主要的作用是设置某个可执行程序的访问控制权限,主要区别就在于apparmor是以路径(path)为基础,而selinux以i节点(inode ...
- UItextField常用方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view ...
- UIImageView的图片拉伸
iOS 8:UIView Stretching设置 使用小图片当变长输入框或类似QQ聊天文字背景效果时,需要拉伸图片.UIImage提供了三个可完成此任务的方法: resizableImageWith ...