发送保留字符作为 URL 参数值
Sending reserved character as URL parameter value
我必须按原样发送参数值 'AbCd/EfgH'
。但是 angular 将 '/'
转义为 %2F
。我无法控制 URL
.
解决这个问题的最佳方法是什么?
我不想强制 angular 停止对所有其他 URL 进行编码。
$http.get(URL, {
params: {
emv_ref: 'AbCd/EfgH',
email: email
}
});
Angular URL 对所有参数进行编码,你不能只从这个过程中排除一个。你只需要用必要的参数手动组合 URL 。使用方便的 $httpParamSerializer 服务序列化您的部分参数并将非编码附加到参数字符串中:
var params = $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
$http.get(URL + '?' + params);
或者更简洁的方法是使用自定义 paramSerializer 函数:
$http.get(URL, {
paramSerializer: function(params) {
return $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
}
});
.. 或者像这样:
$http.get(URL, {
params: {
email: email,
emv_ref: 'AbCd/EfgH'
},
paramSerializer: function(params) {
var ref = '&emv_ref=' + params.emv_ref;
delete params.emv_ref;
return $httpParamSerializer(params) + ref;
}
});
我必须按原样发送参数值 'AbCd/EfgH'
。但是 angular 将 '/'
转义为 %2F
。我无法控制 URL
.
解决这个问题的最佳方法是什么?
我不想强制 angular 停止对所有其他 URL 进行编码。
$http.get(URL, {
params: {
emv_ref: 'AbCd/EfgH',
email: email
}
});
Angular URL 对所有参数进行编码,你不能只从这个过程中排除一个。你只需要用必要的参数手动组合 URL 。使用方便的 $httpParamSerializer 服务序列化您的部分参数并将非编码附加到参数字符串中:
var params = $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
$http.get(URL + '?' + params);
或者更简洁的方法是使用自定义 paramSerializer 函数:
$http.get(URL, {
paramSerializer: function(params) {
return $httpParamSerializer({email: email}) + '&emv_ref=AbCd/EfgH';
}
});
.. 或者像这样:
$http.get(URL, {
params: {
email: email,
emv_ref: 'AbCd/EfgH'
},
paramSerializer: function(params) {
var ref = '&emv_ref=' + params.emv_ref;
delete params.emv_ref;
return $httpParamSerializer(params) + ref;
}
});