当前位置 : 主页 > 网页制作 > HTTP/TCP >

url-routing – Rebol 3方案中的用户/密码

来源:互联网 收集:自由互联 发布时间:2021-06-16
在下面的端口规范中,我试图解析URL以确定用户,传递,主机和路径.用户/通过值是可选的,但我想为每个值设置默认值(如果不存在). 但是如果没有user / pass,则port / spec对象中省略了user / pa
在下面的端口规范中,我试图解析URL以确定用户,传递,主机和路径.用户/通过值是可选的,但我想为每个值设置默认值(如果不存在).

但是如果没有user / pass,则port / spec对象中省略了user / pass – 这是为什么?

>> read sch://foo/bar.r
PORT/SPEC is an object of value: 
   title           string!   "Wee Scheme" 
   scheme          word!     sch 
   ref             url!      sch://foo/bar.r 
   path            string!   "/bar.r" 
   host            string!   "foo" 

>> read sch://foo:bar@foo/bar.r
PORT/SPEC is an object of value: 
   title           string!   "Wee Scheme" 
   scheme          word!     sch 
   ref             url!      sch://foo:bar@foo/bar.r 
   path            string!   "/bar.r" 
   pass            string!   "bar" 
   user            string!   "foo" 
   host            string!   "foo"

另外,在起草这个问题时,我在方案中犯了一个错误,并将解析规则绑定到端口,而不是port / spec-how然后如何在port / spec对象中设置?

规格:

sys/make-scheme [
    name: 'sch
    title: "Wee Scheme"
    actor: [
        read: func [port][
            parse port/spec/ref use [chars][
                chars: charset [#"a" - #"z" #"A" - #"Z" #"0" - #"9" "-_!+%.,"]

                bind [
                    "sch://" [
                        copy user some chars #":"
                        copy pass some chars #"@"
                        | (user: 'mince pass: 'tatties)
                    ]
                    copy host some chars
                    copy path [some [#"/" any chars]]
                    end
                ] port
            ]
            ? port/spec
        ]
    ]
]
make-scheme https://github.com/rebol/r3/blob/master/src/mezz/sys-ports.r#L254使用默认的spec system / standard / port-spec-net,它没有用户和pass.

>> system/standard/port-spec-net
== make object! [
    title: none
    scheme: none
    ref: none
    path: none
    host: none
    port-id: 80
]

因此,如果您想要用户并且即使未在规范中传递,也必须创建自己的规范,如此https://github.com/rebol/r3/blob/master/src/mezz/prot-http.r#L417并将其设置在那里.

网友评论