キリル文字のドメインで Web アプリを開発しています。現在、このドメインは「パーキング ページ」をホストしており、サイトは作成中であると言っています。Chrome でアクセスすると、アドレス バーに punycode が表示されます。ただし、Safariはそれをデコードします。開発目的で/etc/hosts
、テスト用のキリル文字ドメインを介して localhost にアクセスできるようにファイルを変更しました。ただし、Chrome と Safari の両方がホスト名のデコードに失敗します。
この問題を調べましたが、賢明な解決策が見つかりませんでした。という Node.js 用のモジュールがありますpunycode
。ここで、 myreq.url
にキリル文字が含まれている場合はエンコードURIComponent
されるため、デコードするミドルウェアを作成しました。
app.use(function(req, res, next) {
var url = req.url,
decoded = decodeURIComponent(url);
if (url !== decoded) req.url = decoded;
next();
});
正常に動作し、キリル文字のルーティングを使用できるようになりました。しかし、このロジックをホスト名に適用しようとすると、うまくいきません:
app.use(function(req, res, next) {
var hostname = req.hostname,
decoded = punycode.toUnicode(hostname);
if (hostname !== decoded) req.hostname = decoded;
// I have also tried return res.redirect('https://' + decoded + ':' + ...);
next();
});
どんな助けでも大歓迎です。ありがとう!