我想将一些特殊字符(_ + - )传递给我的web api,现在我知道我必须在编码它们的javascript中使用encodeURIComponent()
。但是当我将编码的url传递给http.get时,它会抛出异常:
获取请求代码:
find: function (id) {
var scope = this;
var urlApi = webapi_base_url + model_url;
id = encodeURIComponent(id);
return $http.get(urlApi + id)
.then(function (response) {
if (response.data.success && response.data.exists) {
//logger.info('Successfully found model', '', 'Success');
}
else {
if (showLogger)
logger.error(response.data.error, '', 'Error');
}
return response.data;
})
.catch(function (err) {
scope.WebFailed('get', err);
})
}
例如,我想将值a+
传递给我的网络API,网址为:
抛出以下错误:
XMLHttpRequest无法加载https://localhost:44310/api/v1/model/a%26。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:59242”访问。响应的HTTP状态代码为400。
当我将'a'的值发送到Web API时,没问题:
网络API代码
[Route("{description}")]
public async Task<IHttpActionResult> Get([FromUri] string description)
{
Model model = await _repository.Model().Get().Where(x => x.Description == description).FirstOrDefaultAsync();
if (model == null)
return Ok(new { success = false, exists = false, error = "Could not find model" });
return Ok(new { success = true, exists = true });
}
我认为当我编写uri时,web api无法找到路径并且会抛出异常。
任何想法如何修复web api以允许编码字符。
由于