2016-12-19 11 views
0

HTTPリクエストを使用してURLにデータを投稿しようとすると、@%252540に変換されます。ここで@をURLに渡すと文字列に変換されます

はURLである:

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/[email protected]'); 

与えフィドルをご覧ください:

https://jsfiddle.net/amrindernoor/b8uvwr86/

どのように私はこの問題を回避することができますか?メールアドレスパラメータの

+0

であなたに鮮明な画像が得られますスクリーンショットである 'php'タグは、ここで何をしますか? –

+0

私はあなたの新しいタブにリダイレクトがあると思う – Beginner

+0

[JavaScriptでURLをエンコードする]の重複している可能性がありますか?(http://stackoverflow.com/questions/332872/encode-url-in-javascript) – Tiger

答えて

4

お客様のURL https://secure.rspcdn.com/xprr/red/PID/3428/SID/[email protected]には複数の内部リダイレクトがあります。

各リダイレクトで、既にエンコードされた電子メールをエンコードします。ここで

が問題を引き起こしているまさに上の簡単な説明です:

まず、@はそのまま渡されます。

最初のリダイレクションでは、まだ有効な%40にエンコードされています。

各リダイレクション後、再び符号化され、最終値は%252540となります。以下は

この

enter image description here

+0

ああ!それを得ましたが、今の解決策は何ですか? 2番目のリダイレクトが存在するサーバーにアクセスできないためです。 –

+0

他の解決策は、関係者に連絡を取ってアクセスを許可する以外に、根本的な原因からコード化されたものを修正することはできません。 – Samir

0

使用encodeURIComponent

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('[email protected]')) 

(encodeURIComponentでによって返される)、電子メールパラメータの正しい値は˙amrinder%40odz.com˙、[email protected]サーバ側として解釈されるです。

変更後、このURLは302のリダイレクトをhttps://www.rsptrack.com/click.track?CID=287283&AFID=276422&SID=rentown&SID2=n&SID3=n&email=amrinder%40odz.com&zid=f197f1cfb16ae7d56748bca35ebe7658&tkp=3428&tku=4160&tks=86073803に返します。これは電子メールパラメータに正しい値が含まれているようです。

+0

私はこれを試しましたが、あなたは私が提供するフィドルでも同じことを試すことができます。 –

+0

同じ結果、ここではフィドルの更新版です:https://jsfiddle.net/b8uvwr86/1/ –

+0

@Insomaniaは、 '='記号の後に空白を取り除きます... – m0sa

0

encodeURIComponent()機能を使用して処理を完了できます。この関数は、特殊文字をエンコードします。また、次の文字をコード,/? : @ & = + $ #

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('[email protected]')) 

注:

エンコードURI 成分を復号するdecodeURIComponent()関数を使用します。

関連する問題