发送保留字符作为 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;
    }
});