4

リンクを生成する Web アプリがあります。gmail、yahoo メールなどを使用して、作成したリンクを他のユーザーに簡単にメールで送信できるようにしたいと考えています。Yahoo メールには、回避策が必要な特定の癖があります。

Yahoo メール アカウントをお持ちの場合は、次のリンクをたどってください。

http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%23anchor

yahoo が特定のメール サーバーにリダイレクトすることに注意してください (例: http://us.mc431.mail.yahoo.com/mc/compose )。それと同じように、16 進コードをデコードします。そのうちの 1 つである %23 は、クエリ文字列パラメーター値では無効なハッシュ記号です。%23 以降のすべての情報が失われます。

私のリンクはすべて壊れており、別のキャラクターを使用することはできません。

us.mc431.yahoo.com に直接電話することは私にとってはうまくいきますが、場所によってはおそらくすべてのユーザーにとってうまくいくとは限りません。

html=true|false を設定して、URL を html タグに入れてみました。何も機能しません。この特定の癖に対して信頼できる回避策を持っている人はいますか?

注:サーバーベースの回避策は、私にとっては初心者ではありません。これは、Yahoo とエンドユーザーの間だけのリンクでなければなりません。

ありがとう

4

4 に答える 4

4

これが私がそれを行う方法です:

  1. window.escapeこれらの文字 で a を実行します。& ' " # > < \

  2. encodeURIComponent文字列全体に対して a を実行する

それは私の場合のほとんどで機能します。改行(\n)はまだ問題ですが、私の場合は \n をスペースに置き換えて、うまくいきました。

于 2012-12-06T00:56:05.377 に答える
3

改行の場合、改行を< BR >として追加し、それも二重エンコードします。これは、新しいメッセージの改行として正常に解釈されます

于 2011-07-03T12:34:41.620 に答える
3

私は過去数時間同じ問題に対処してきましたが、回避策を見つけました!

アンカーを二重エンコードすると、Yahoo によって正しく解釈されます。つまり、%23 を %2523 に変更します (パーセント記号は %25 でエンコードされます)。

したがって、URI は次のようになります:
http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%2523anchor

アンパサンドにも同じ回避策を使用できます。それを %26 としてのみエンコードすると、Yahoo はそれを "&" に変換します。メッセージの残りを破棄します。上記と同じ手順 - %26 を %2526 に変更します。

ただし、改行の問題 (%0D および %0A) の解決策はまだ見つかりません。

于 2010-12-01T11:32:24.403 に答える
1

Yahoo のサーバーが HTTP リダイレクトを発行するときに何をするかに翻弄されていると思います。リダイレクトでエスケープする URL を保持する必要があるように見えますが、そうではありません。ただし、基礎となるアプリケーションの知識がなければ、そうしない理由を言うのは困難です。おそらく、それは単なる意図しない副作用 (またはバグ) であるか、またはそのページの Javascript 機能の一部では、ハッシュ タグを処理する必要があります。

于 2009-10-27T18:26:44.623 に答える