在Angular 5中,我有一个像这样的路由配置:
{path: 'checkout/success/:type/:bookingId', component: SuccessComponent}
然后当我读到这个网址时:
http://localhost:9001/checkout/success/airport-bus/Mdi7D-2mNb_qeDIw8gWGJw==?vnp_Amount=4000000&vnp_BankCode=NCB&vnp_BankTranNo=20180129102837&vnp_CardType=ATM&vnp_OrderInfo=1801290998&vnp_PayDate=20180129103116&vnp_ResponseCode=00&vnp_TmnCode=DULICH01&vnp_TransactionNo=13010138&vnp_TxnRef=18012945505&vnp_SecureHashType=MD5&vnp_SecureHash=8c9d820c7ef973fcd999de7322986072
Angualr自动削减了预订的参数,它重定向到:
http://localhost:9001/checkout/success/airport-bus/Mdi7D-2mNb_qeDIw8gWGJwcode
然后boongkingId = Mdi7D-2mNb_qeDIw8gWGJwcode(太短) 我无法满足预订所需。
如何解决此问题?
答案 0 :(得分:2)
这是因为您在==
中使用:bookingId
(Mdi7D-2mNb_qeDIw8gWGJw ==?....)。如果省略这些,Angular 4不应该删除其余的URL。
您只能在参数中使用某些字符,请查看IETF RFC 398中的规范以获取更多详细信息。
EDIT 在IETF RFC 3986中添加了关于params的解释
来自IETF RFC 3986, section 3.3. Path
中的解释除了分层路径中的点段之外,路径段也是如此 通用语法认为不透明。 URI生成应用程序 经常使用段中允许的保留字符来分隔 特定于方案或特定于引用程序处理程序的子组件。对于 例如,分号(“;”)和等于(“=”)保留字符是 通常用于分隔适用的参数和参数值 那段。