[問題] telnet protocol 的 URI 部分

43 views
Skip to first unread message

bootleq

unread,
Nov 28, 2009, 9:18:54 PM11/28/09
to pcmanfx
這個跟 自動登入、網站資訊(會出現在頁面資訊 - 安全資訊等地方)等有關。

目前在 TelnetProtocol.js 裡面 newURI 是用 nsSimpleURI 而非如 FireBBS 的
nsStandardURL
參考資料:https://developer.mozilla.org/en/URIs_and_URLs

我嘗試模仿 FireBBS 的自動登入功能,發現 nsSimpleURI 是沒有 host 值的,
導致 Fx 原生的 記住密碼、造訪次數 這些功能都不適用。

所以 uri.spec 雖可存取 spec,但 uri.host 這個 getter 在原始碼裡面就直接報錯:
278 行 http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsSimpleURI.cpp

此限制可能導致以後很多 Fx 的功能我們不能用(可能含 Mozilla Weave 等)


解決方式:
改用同 FireBBS 的 nsStandardURL
但是會造成網址列出現 telnet://ptt.cc/ 這樣的東西(尾巴多個斜線)
這不知道正確與否,不正確的話,暫時沒找到修改方式。

PCMan

unread,
Nov 28, 2009, 10:35:10 PM11/28/09
to pcm...@googlegroups.com
這個 nsURI 是我們自己在 protocol handler 裡面生成的
有沒有可能我們自己 parse,然後幫 uri 物件設定 host 屬性?
newURI: function(spec, charset, baseURI)
{
var uri = Components.classes[kSIMPLEURI_CONTRACTID].createInstance(nsIURI);
uri.spec = spec;
uri.host = 我們自己幫它設定 host;
return uri;
},
這樣能動嗎?

如果真的不得已要換,結尾多出 / 我個人是還可以接受

2009/11/29 bootleq <boo...@gmail.com>:

bootleq

unread,
Nov 28, 2009, 10:40:30 PM11/28/09
to pcm...@googlegroups.com
不行耶,嘗試存取 host 就丟 exception 了。

PCMan

unread,
Nov 28, 2009, 10:44:44 PM11/28/09
to pcm...@googlegroups.com
那就用 Standard URI 吧,不過得確定不會有什麼副作用才行...

2009/11/29 bootleq <boo...@gmail.com>:


> 不行耶,嘗試存取 host 就丟 exception 了。
>

> 2009/11/29 PCMan <pcma...@gmail.com>

Littlebtc

unread,
Nov 29, 2009, 3:23:03 PM11/29/09
to pcmanfx
r27試著放上去了
http://code.google.com/p/pcmanfx/source/detail?r=27

我認為會出現trailing slash可能是Fx內部對於URI規範做的一種因應。
我也花了很多時間讀文件,避免了一些可能發生的URI狀況,以下的URI都應該要被轉成正確的telnet://ptt.cc/

telnet:ptt.cc
telnet:/ptt.cc
telnet:///ptt.cc
telnet://ybite:pc...@ptt.cc
telnet://ptt.cc/Gossiping
telnet://ybite:pc...@ptt.cc/Gossiping

目前沒發現side-effect,而且解決了host為空的問題

On 11月29日, 上午11時44分, PCMan <pcman...@gmail.com> wrote:
> 那就用 Standard URI 吧,不過得確定不會有什麼副作用才行...
>

> 2009/11/29 bootleq <boot...@gmail.com>:


>
> > 不行耶,嘗試存取 host 就丟 exception 了。
>

> > 2009/11/29 PCMan <pcman...@gmail.com>


>
> >> 這個 nsURI 是我們自己在 protocol handler 裡面生成的
> >> 有沒有可能我們自己 parse,然後幫 uri 物件設定 host 屬性?
> >> newURI: function(spec, charset, baseURI)
> >> {
> >> var uri =
> >> Components.classes[kSIMPLEURI_CONTRACTID].createInstance(nsIURI);
> >> uri.spec = spec;
> >> uri.host = 我們自己幫它設定 host;
> >> return uri;
> >> },
> >> 這樣能動嗎?
>
> >> 如果真的不得已要換,結尾多出 / 我個人是還可以接受
>

> >> 2009/11/29 bootleq <boot...@gmail.com>:


> >> > 這個跟 自動登入、網站資訊(會出現在頁面資訊 - 安全資訊等地方)等有關。
>
> >> > 目前在 TelnetProtocol.js 裡面 newURI 是用 nsSimpleURI 而非如 FireBBS 的
> >> > nsStandardURL
> >> > 參考資料:https://developer.mozilla.org/en/URIs_and_URLs
>
> >> > 我嘗試模仿 FireBBS 的自動登入功能,發現 nsSimpleURI 是沒有 host 值的,
> >> > 導致 Fx 原生的 記住密碼、造訪次數 這些功能都不適用。
>
> >> > 所以 uri.spec 雖可存取 spec,但 uri.host 這個 getter 在原始碼裡面就直接報錯:
> >> > 278 行

> >> >http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsSimp...

bootleq

unread,
Nov 29, 2009, 10:39:23 PM11/29/09
to pcmanfx
發現 trailing slash 相關 Bug 214405:
https://bugzilla.mozilla.org/show_bug.cgi?id=214405

看來所有 URL 都會被檢查然後加個 /
我是有點困惑,因為 URI scheme 似乎不見得有 slash:
http://en.wikipedia.org/wiki/URI_scheme#Official_IANA-registered_schemes

至於 telnet 的 scheme 如下:
telnet://<user>:<password>@<host>:<port>/
且「The final "/" character may be omitted」(參考 http://tools.ietf.org/html/rfc4248

所以我想 r27 應該無問題吧......
新版可以就這樣做,等找到辦法再來把 / 去掉。

On 11月30日, 上午4時23分, Littlebtc <sst.dre...@gmail.com> wrote:
> r27試著放上去了http://code.google.com/p/pcmanfx/source/detail?r=27

bootleq

unread,
Dec 5, 2009, 10:12:40 PM12/5/09
to pcmanfx
記錄一下:

browser.js 有個 gURLBar.value 即網址列文字,
但這個值會在 數個時機 被 URLBarSetURI 方法修改。

目前應該沒有好方法去掉 slash。

On 11月30日, 上午11時39分, bootleq <boot...@gmail.com> wrote:
> 發現 trailing slash 相關 Bug 214405:https://bugzilla.mozilla.org/show_bug.cgi?id=214405
>
> 看來所有 URL 都會被檢查然後加個 /
> 我是有點困惑,因為 URI scheme 似乎不見得有 slash:http://en.wikipedia.org/wiki/URI_scheme#Official_IANA-registered_schemes
>
> 至於 telnet 的 scheme 如下:
> telnet://<user>:<password>@<host>:<port>/

> 且「The final "/" character may be omitted」(參考http://tools.ietf.org/html/rfc4248

Reply all
Reply to author
Forward
0 new messages