Node.jsでURLをパラメータとして取得するには?

コーダー1000

コード:

app.get("/:url", function(req,res) {
    var url = req.params.url;
    res.send(url);
});

問題:

これは動作しません。

私が試した場合:

http://localhost:3000/https://www.google.com

私は得る:

Cannot GET /https://www.google.com
rsp

正規表現を使用して、これを試すことができます。

var app = require('express')();

app.get(/^\/(.*)/, function (req, res) {

    var url = req.params[0];
    res.send(url);

});

app.listen(3000, () => console.log('Listening on 3000'));

実行するとき:

curl http://localhost:3000/https://www.google.com

サーバーは次を返す必要があります。

https://www.google.com

更新

URL でコロンが合法かどうかについては、いくつかの論争があります。

詳細については、この質問を参照してください。

RFC 3986 によると、これは正当な URL です。

http://localhost:3000/https://tools.ietf.org/html/rfc3986

ただし、これも合法ですが、次の点に注意してください。

http://localhost:3000/https://tools.ietf.org/html/rfc3986#section-3.3

その URL をブラウザに入力した場合、サーバーは次のもののみを取得します。

/https://tools.ietf.org/html/rfc3986

リクエストで。そのため、厳密には必要ではありませんが、他の URL に入力する URL を URL エンコードすることをお勧めします。Zac Delventhalによる回答を参照してください

実験

上記のコード例を使用すると、このコマンドは次のようになります。

curl http://localhost:3000/https://www.google.com/

これを出力します:

https://www.google.com/

しかし、このコマンド:

curl 'http://localhost:3000/https://www.google.com/#fragment'

これを出力します:

https://www.google.com/

上記で一重引用符を使用したのは、ここで必要だからではありません。そうではありません。以下を参照してください。

echo http://localhost:3000/https://www.google.com/#fragment

しかし、ハッシュ フラグメントが消えないことを示すために、それが原因である可能性があると誰かが考えた場合に備えて、ハッシュ フラグメントはシェルによってコメントとして扱われるためです。引用符が使用されている場合でも送信されず、次の-vスイッチで何が起こるかを示すことができますcurl

* Connected to localhost (127.0.0.1) port 3000 (#0)
> GET /https://www.google.com/ HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:3000
> Accept: */*

ご覧のとおり、ハッシュ フラグメントは HTTP でさえ送信されないため、サーバーはそれが存在したことさえ知ることができません。

ちなみに、これは、プロキシ サーバーへの HTTP リクエストがこれを送信するため、他の URL 内でエンコードされていない URL を使用してもプロキシを台無しにしないことも示しています。

GET https://www.google.com/ HTTP/1.1

これではありません:

GET /https://www.google.com/ HTTP/1.1

混乱することはありません。(スラッシュに注意してください。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Node.jsでクライアントからサーバーに(urlパラメータなしで)データを取得する方法は?

分類Dev

AWSLambda-Node.jsを使用してパスパラメーターを取得する

分類Dev

Node.JS / Express-URLパラメーターを使用して会社の製品を取得する

分類Dev

typescriptを使用してnode.jsの他のパラメータで画像ファイルを取得するにはどうすればよいですか?

分類Dev

node.jsとExpressでURLパラメーターを使用する

分類Dev

Node / ExpressアプリにパラメーターとしてURLを渡す

分類Dev

node.jsを使用してawslambdaで関数パラメーター値を取得する

分類Dev

KeyCloakでNODE.JS認証を試行して「無効なパラメーター:redirect_uri」を取得する

分類Dev

javascript(node.js)は、URLハッシュをパラメーター付きのURLに変換します

分類Dev

node.jsのexpressを使用してパラメータでコロンを取得します

分類Dev

Node.js-MSSQLパッケージを使用して複数のパラメーターを動的に追加する

分類Dev

URLで複数のパラメーターを送信する方法とNode.js / ExpressのGETルートでそれらにアクセスする方法

分類Dev

Node js + Objection js + Postgresql。タイプ '{token:string}'の引数をタイプ 'PartialUpdate <User>'のパラメーターに割り当てることはできません

分類Dev

node.jsのコールバックパラメーターとして関数の実行を同期する

分類Dev

Node JSでExpressを使用してピリオド付きのパラメーターを読み取る方法は?

分類Dev

電子メール監査APIにNode.jsとHTTPSを使用しているパラメーターが長すぎます

分類Dev

エクスプレスサーバーインスタンスをパラメーターとしてNode.JSのhttpモジュールに渡す必要があるのはなぜですか?

分類Dev

node.jsを使用してexpress.jsのパラメーターを読み取るための正しい構文は何ですか

分類Dev

node.js(browserify)のrequire()関数でパラメーターとして変数を使用できないのはなぜですか?

分類Dev

node.jsを使用してAmazonsnsトピックに公開するためのパラメーターの例

分類Dev

翡翠からjs / nodeにパラメータを送信する

分類Dev

node.jsとaws-sdkを使用してラムダからawsパラメーターストアにアクセスする方法

分類Dev

subStringを使用してnode.jsでエラーを取得する

分類Dev

vscodeでnode.jsを記述しているときに、expressなどのサードパーティライブラリで定義されている特定のタイプにIntelliSenseを与えることは可能ですか?

分類Dev

node.js express-POST本文のパラメーターを元のフォームに戻して無効化時に再入力する方法は?

分類Dev

トピックのメタデータをフェッチしているときに、kafkajsクライアント(Node.js / express.js)が「TypeError:topics.forEachは関数ではありません」をスローするのはなぜですか?

分類Dev

node.jsの基本認証を使用してURLからユーザー名とパスワードを取得するにはどうすればよいですか?

分類Dev

node.jsのHTTPGETでURLパラメーターのデフォルト値を設定します

分類Dev

'Node'で 'removeChild'の実行に失敗しました:パラメーター1はタイプ 'Node'ではありません。要素を削除する方法

Related 関連記事

  1. 1

    Node.jsでクライアントからサーバーに(urlパラメータなしで)データを取得する方法は?

  2. 2

    AWSLambda-Node.jsを使用してパスパラメーターを取得する

  3. 3

    Node.JS / Express-URLパラメーターを使用して会社の製品を取得する

  4. 4

    typescriptを使用してnode.jsの他のパラメータで画像ファイルを取得するにはどうすればよいですか?

  5. 5

    node.jsとExpressでURLパラメーターを使用する

  6. 6

    Node / ExpressアプリにパラメーターとしてURLを渡す

  7. 7

    node.jsを使用してawslambdaで関数パラメーター値を取得する

  8. 8

    KeyCloakでNODE.JS認証を試行して「無効なパラメーター:redirect_uri」を取得する

  9. 9

    javascript(node.js)は、URLハッシュをパラメーター付きのURLに変換します

  10. 10

    node.jsのexpressを使用してパラメータでコロンを取得します

  11. 11

    Node.js-MSSQLパッケージを使用して複数のパラメーターを動的に追加する

  12. 12

    URLで複数のパラメーターを送信する方法とNode.js / ExpressのGETルートでそれらにアクセスする方法

  13. 13

    Node js + Objection js + Postgresql。タイプ '{token:string}'の引数をタイプ 'PartialUpdate <User>'のパラメーターに割り当てることはできません

  14. 14

    node.jsのコールバックパラメーターとして関数の実行を同期する

  15. 15

    Node JSでExpressを使用してピリオド付きのパラメーターを読み取る方法は?

  16. 16

    電子メール監査APIにNode.jsとHTTPSを使用しているパラメーターが長すぎます

  17. 17

    エクスプレスサーバーインスタンスをパラメーターとしてNode.JSのhttpモジュールに渡す必要があるのはなぜですか?

  18. 18

    node.jsを使用してexpress.jsのパラメーターを読み取るための正しい構文は何ですか

  19. 19

    node.js(browserify)のrequire()関数でパラメーターとして変数を使用できないのはなぜですか?

  20. 20

    node.jsを使用してAmazonsnsトピックに公開するためのパラメーターの例

  21. 21

    翡翠からjs / nodeにパラメータを送信する

  22. 22

    node.jsとaws-sdkを使用してラムダからawsパラメーターストアにアクセスする方法

  23. 23

    subStringを使用してnode.jsでエラーを取得する

  24. 24

    vscodeでnode.jsを記述しているときに、expressなどのサードパーティライブラリで定義されている特定のタイプにIntelliSenseを与えることは可能ですか?

  25. 25

    node.js express-POST本文のパラメーターを元のフォームに戻して無効化時に再入力する方法は?

  26. 26

    トピックのメタデータをフェッチしているときに、kafkajsクライアント(Node.js / express.js)が「TypeError:topics.forEachは関数ではありません」をスローするのはなぜですか?

  27. 27

    node.jsの基本認証を使用してURLからユーザー名とパスワードを取得するにはどうすればよいですか?

  28. 28

    node.jsのHTTPGETでURLパラメーターのデフォルト値を設定します

  29. 29

    'Node'で 'removeChild'の実行に失敗しました:パラメーター1はタイプ 'Node'ではありません。要素を削除する方法

ホットタグ

アーカイブ