【问题标题】:AngularJS - $http request special characters issueAngularJS - $http 请求特殊字符问题
【发布时间】:2019-10-08 17:16:03
【问题描述】:

我希望你们都是好人。我正在尝试使用我的同事使用 AngularJS $http 编写的 API。它是一种 PATCH 方法类型。其中一个参数在 URL (SomeMethod/User/FHD&TE) 中传递,另一个在正文 (JSON) 中传递。正文中的那个显然没问题,但是 URL 中传递的那个有问题,因为不时会出现一些特殊字符。 API 响应代码为 400,它显示“从客户端检测到潜在危险的 Request.Path 值”。我尝试使用转义和编码 JS 函数,但它们都不起作用。更重要的是,我用来发出请求的 angular.http 中有一个选项参数。据我所知,它负责对参数进行编码(解决特殊字符问题),但我不能使用它,因为 URL 会与 API 期望的不同。它将是“SomeMethod/User?FHDTE%”而不是“SomeMethod/User/FHD&TE”,并且显然回复 404。你现在是否可以在客户端解决这个问题,如果可以,我该怎么做?还是需要更新后端?

样品请求:

return $http({
                method: 'PATCH',
                url: ...SomeMethod/User/firstURLParameter,
                headers: { 'Content-Type': 'application/json' },
                data: { "secondBodyParameter": true }
            });

【问题讨论】:

    标签: javascript angularjs api http url


    【解决方案1】:

    如果服务器端是用 Nodejs 编写的,请尝试对收到的参数使用 unescape 函数。

    var str = Need%20tips%3F%20Visit%20W3Schools%21; var str_1 = unescape(str)

    str1 结果将是“需要提示?访问 W3Schools!”

    来自 w3schools https://www.w3schools.com/jsref/jsref_unescape.asp的示例

    【讨论】:

    • 您好,首先,非常感谢您的回答。不幸的是,后端是用 c# asp.net 编写的。我昨天做了更多的研究,看起来如果不更新 API 就无法实现。
    • 你能检查一下吗,如果这是确切的要求吗? stackoverflow.com/questions/6833865/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2017-04-22
    • 2011-02-15
    • 2019-10-16
    • 2011-04-19
    相关资源
    最近更新 更多