Skip to content

Request 类中的一些问题 #1

@xqin

Description

@xqin

一. ip 方法中 在没有指定 ipHeader的情况下, 跑了一个循环去检测请求头中的字段, 在循环中根据条件给 @$ip 赋值, 但你目前的代码最终还是把 @$ip 赋值成了 @req.socket.remoteAddress.

所以不清楚你这里是想实现什么?
(是不是后面那个少了一个if, 用于在请求头中没获取到的时候的一个补救措施?)

二. 第9行的 options = {} 作用域的一个小情况. Request 的所有实例共用这同一个变量, 这个变量自引入 Request 这个类的时候就开始创建了, 且始终 hold 着最后一个 实例 在创建时传递的参数 opt.

建议的做法是 将 opt 赋值给当前 实例(即 this) 的一个属性(比如 @options, 然后在使用的时候使用 @options 来获取参数(目前该变量只在 ip 方法中被使用), 这样的好处是参数会跟着实例一起被回收.

三. Response 中定义的 options 虽然有赋值, 但无人使用, 应该是为后续做准备, 但应也注意一下, 与上面第2条有同样的情况.

四. http 中的 assets 方法因对 URL中的 \.{2,} 全部替换为空(应该是为了防止跳上级目录), 将会导致当文件名中 有 ... 这样的字符时, 读取不到该文件. 所以正确的做法是, 仅对 目录 这一层做替换, 即排除掉要读取的文件名(因为文件名中带有 .... 这样的字符是合法的).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions