解决方案 »

  1.   

    301,302状态码,都会在响应中发送Location头,浏览器接收到301/302,然后就看头Location中的对应的值,然后转向,所以据我所知,这个方法不可行。其实,在你知道要做重定向的时候,目标地址是已知的,你可以创建一个http的客户端,将这个客户端返回的html再返回给你的客户端,相当于做了一个代理。另外,使用frameset或iframe也可以做到。或者在域名上做转发也可以。
      

  2.   

    不是还有res.render吗,你可以直接用这个,加载一个模板啊,不同的属性或者判断方法,去加载不同的页面。就可以了。
      

  3.   


    这个功能大致是根据短网址跳转到实际的地址,比如这个地址是一个图片的地址,别人用来显示,所以不能用iframe之类的页面来嵌套
      

  4.   

    那你直接用个模板,然后里面加个iframe加载对应的网址呗。要么你又要用自己的地址,又要用别人的内容,怎么搞?
      

  5.   


    是这样的,在文件系统上传了一个文件(比如目前的功能主要是图片文件),可以生成对应的下载地址,别人可以分享,分享出去的是一个短网址。
    如果这个分享是公开,那访问短网址,就会直接转到实际的下载地址。
    如果这个分享是私密的,那访问短网址,会先转到一个密码输入页面,用户输入正确密码之后,再转到实际的地址。
    现在的问题是,用户输入密码之后,浏览器地址跳转到实际的下载地址,然后把这个地址拷出来之后,就可以绕过密码直接访问了。
    。。你这个逻辑根本就是错误的,我也做过网盘下载,要根据post的密码或者当前登陆用户权限来输出不同页面,这跟后台有关,不存在在不同的网址下载。再就是,实际的地址根本不用暴露,用户看到的都是download?id=xxxx&token=asdgwegewl类似参数的网址,依靠服务器端程序输出2进制流的。你认为下载就是给个xxx.zip的实际地址来下载么?
      

  6.   

    那你最终输入密码之后要跳的那个网址,如果是使用的你nodejs做的路由跳转,那么这个跳转使用post类型就行了啊。那么在输入的地址栏,如果直接输入网址,是get类型的访问,就不会能访问到的啊。比如你要访问的地址是:比如下面这样:
    app.get('/login',function(req,res){
    res.redirect("这里是密码登陆界面");
    //如果使用的直接输入地址,则让他跳到输入密码的界面。
    });
    app.post('/login',function(req,res){
    res.redirect("使用post类型,则跳转到对应的页面~~~");
    //如果使用的直接输入地址,则让他跳到输入密码的界面。
    });
      

  7.   

    是这样的,文件存储用的是别的公司提供的,有点像阿里云的OSS,他们生成出来的地址是一个文件的真实地址(至少图片是这样的,而目前我用的功能就是图片存储),所以我没办法在用户访问这个地址的时候,限制用post方式来访问
      

  8.   

    绕了半天不又绕回来了?
    #1 的第二段描述已经解决了你的问题:
    不是你发 url 让用户打开,而是你把数据取回来返回给用户
      

  9.   

    只能这样子吗,比如java的跳转有两种方式,一种是response.sendRedirect,还有一种RequestDispatcher.forward,前者会改变浏览器地址,后者不会,其实我是想问有没有类似于java的RequestDispatcher.forward方法
      

  10.   

    RequestDispatcher.forward 的作用不就是这个吗?
    只不过是个封装好的 socket 应用而已如果 nodejs 没有提供封装好的方法,那就自己封装一个就是了