我正在尝试通过HTTP请求将数据发布到网址,当我尝试传递电子邮件时,它会将 @ 转换为%252540 。
以下是网址:
window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=amrinder@odz.com');
请看看给定的小提琴:
https://jsfiddle.net/amrindernoor/b8uvwr86/
如何避免此问题?
答案 0 :(得分:4)
您的网址https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=amrinder@odz.com
有多个内部重定向。
在每次重定向中,它都会对已编码的电子邮件进行编码。
以下是对导致问题的确切原因的简要说明:
首先,
@
按原样传递。在第一次重定向期间,它被编码为
%40
,仍然有效。在每次重定向之后,它再次被编码,导致
%252540
作为最终值。
下面的屏幕截图将为您提供关于此
的清晰图片答案 1 :(得分:0)
使用encodeURIComponent
作为电子邮件地址参数:
window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('amrinder@odz.com'))
email参数的正确值(由encodeURIComponent返回)是˙amrinder%40odz.com˙,它将被解释为amrinder@odz.com
服务器端。
更改后,该网址会返回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
,这似乎包含电子邮件参数的正确值。
答案 2 :(得分:0)
您可以使用encodeURIComponent()功能完成此操作。此功能对特殊字符进行编码。此外,它还会对以下字符进行编码:, / ? : @ & = + $ #
window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('amrinder@odz.com'))
注意:
使用decodeURIComponent()函数解码编码的URI 成分