`
wwty
  • 浏览: 542989 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

在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的保护。

分享到:
评论

相关推荐

    asp.net下实现URL重写技术的代码

    此外,还可以通过其他方式来处理回发问题,例如使用 JavaScript 或 AJAX 技术来实现无刷新的页面更新,从而保持 URL 的一致性。 综上所述,通过上述步骤可以在 ASP.NET 应用程序中实现 URL 重写功能,不仅可以改善...

    easyUI+urlrewrite

    3. **隐藏真实路径**:可以隐藏敏感信息,比如数据库ID,避免直接暴露给用户。 4. **SEO优化**:搜索引擎更喜欢有意义的URL,URLRewrite有助于提高网页在搜索结果中的排名。 5. **重定向**:当页面移动或URL结构变更...

    android中嵌入本地html

    出于安全考虑,避免在`addJavascriptInterface`中暴露敏感方法,因为这可能导致代码注入攻击。另外,注意定期更新WebView组件,以获得最新的安全补丁和性能优化。 综上所述,Android中嵌入本地HTML并支持AJAX请求和...

    javascript请求servlet实现ajax示例(分享)

    使用Ajax技术发起GET请求时,可以将参数拼接在URL后面。例如,上述代码中的GET请求方式: ```javascript var url = "Hello?name=zhangsan"; xmlReq.open("GET", url, true); xmlReq.send(null); ``` 这里,我们...

    GlobalAjaxListener:监听页面全局ajax请求的插件,可以做很多的事情~

    1、获取GlobalAjaxListener对象:var listener = GlobalAjaxListener(非模块化的则暴露在window) 2、初始化参数: listener.extend(opts) opts对象属性: 字段 类型 默认值 说明 onRedirectResponse function(url,...

    基于html5+node.js 图片上传、预览详解.zip

    在安全方面,我们应避免暴露文件的绝对路径,可以使用URL重写技术,让客户端通过如"/uploads/image.jpg"这样的伪静态路径访问图片。此外,为了保护用户隐私,应考虑对上传的图片进行水印处理或添加防盗链机制。 在...

    达内servlet/jsp/jquery资料

    - 使用正确的编码设置来避免乱码问题。 ### 31. MVC - **MVC** (Model-View-Controller) 是一种常见的设计模式,用于分离业务逻辑、数据模型和表示层。 - **Model** 负责数据和业务逻辑,**View** 负责显示数据,*...

    javaweb文件上传与下载模块源代码

    - 下载时应避免直接暴露文件路径,使用URL重写或动态生成下载链接以提高安全性。 8. **用户体验**: - 提供进度条显示文件上传进度,提升用户体验。这可能需要JavaScript库如jQuery或Ajax技术来实现异步通信。 9...

    thinkphp3.0完全中文开发手册

    - **部署结构**:为了安全起见,通常只将公有目录(Public)暴露在 Web 服务器根目录下。 **2.4 项目编译** - **编译目的**:提高运行效率,减少运行时的资源消耗。 - **编译过程**:将某些动态生成的文件转换为...

    routed-actions:创建自定义端点,路由到 WordPress 操作

    然后,在JavaScript中,可以使用`jQuery.ajax()`或fetch API发起请求,例如: ```javascript jQuery.ajax({ type: 'GET', url: wpajax.ajax_url + '?action=custom_action', success: function(response) { //...

    asp.net flv播放

    还可以使用URL重写规则隐藏实际的文件路径,只通过服务器端脚本暴露播放接口。 5. **性能优化**:对于大型视频库,可以考虑使用流式传输技术,如HTTP Live Streaming (HLS) 或MPEG-DASH,它们可以根据用户的网络...

    DWR学习资料+PPT

    5. `rewrite`:配置URL重写规则,使DWR请求更难以被发现。 6. `filters`:添加处理请求和响应的过滤器,可以用于安全检查或日志记录。 **PPT**:这是一套DWR的学习教程,可能包括以下主题: 1. **DWR简介**:讲解...

    面向对象架构OA项目

    在这个OA项目中,"将方法全部封装起来"意味着将业务逻辑和数据处理封装在类或对象中,仅暴露必要的操作接口。 3. **继承**:继承允许一个类(子类)从另一个类(父类)继承属性和方法,减少了代码重复,增强了代码...

    Java面试宝典

    - 通过URL重写。 - 通过隐藏表单字段。 8. **session的创建与销毁** - **创建**: 当客户端首次访问服务器时,服务器会创建一个新的session。 - **销毁**: session可以通过调用`invalidate`方法手动销毁,或者在...

    django实现模型字段动态choice的操作

    这种方法的好处是直接在后端处理,避免了前端的复杂性。但缺点是每次创建或编辑表单时都需要执行此逻辑。 ```python class PushRuleForm(forms.ModelForm): def __init__(self, *args, **kwargs): if 'request' ...

    .net常见面试题

    此方法可以保持状态,并且不会将数据暴露在 URL 中。 #### 3. 斐波那契数列计算 **题目**:一列数的规则如下: 1、1、2、3、5、8、13、21、34 求第 30 位数是多少,用递归算法实现。 ```csharp public class Main...

    面向对象与交互式程序设计.pdf

    - 在Web环境中,交互性通常通过JavaScript、AJAX技术实现,提供无需刷新页面的动态内容更新。 3. Web开发相关技术: - HTML(超文本标记语言)和CSS(层叠样式表)是构建网页的基础。 - JavaScript是客户端脚本...

    kome-img:IMG回购博客

    图片服务通常会使用友好的URL,如`/images/123.jpg`,而不是暴露实际的存储路径。这需要服务器配置URL路由规则,将请求映射到正确的图片资源。对于SEO优化和用户体验都有积极影响。 5. **权限控制**: 图片管理...

    java面试总结

    - 不安全,因为数据暴露在URL中。 - 限制数据长度,不能发送大量数据。 - **POST**: - 数据放置在HTTP请求的消息主体中。 - 安全性相对较高,数据不暴露在URL中。 - 没有数据长度限制,可以发送大量数据。 ###...

Global site tag (gtag.js) - Google Analytics