为啥当我将帖子发送到我的服务器时字符串更改为 %

Posted

技术标签:

【中文标题】为啥当我将帖子发送到我的服务器时字符串更改为 %【英文标题】:why string is changed to % when I send with post to my server为什么当我将帖子发送到我的服务器时字符串更改为 % 【发布时间】:2021-09-21 12:16:05 【问题描述】:

我要发送的字符串是

let param="value":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2w";
this.postHttp("http://202.31.237.173/ionic",param);

postHttp(url: string, param: any = ) 
    param = this.jsonToURLEncoded(param);
    console.log(param);
    let headers = new Headers( 'Content-Type' : 'application/x-www-form-urlencoded', 'Accept' : 'application/json' );
    //let headers = new Headers( 'Content-Type' : 'application/json' );
    let options = new RequestOptions( headers: headers );

    
    //return this.http.post(url, param, options).map((res: Response) => res.json() );
    this.http.post(url, param, options).subscribe((o)=>
      console.log("subscribe in post http")
    )
   

但是当我在我的服务器中收到它时。 字符串值显示为

'value=data%3Aimage%2Fjpeg%3Bbase64%2C%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2w'

它将 / 更改为 % ...etc...为什么会发生以及如何解决?

接收的服务器代码如下

@app.route("/ionic", methods=['POST']) 
def predictionic():
    
    data = request.get_data()
    print(data);

【问题讨论】:

/ 更改为 %2F,这是 URL 编码,它的发生是因为 param = this.jsonToURLEncoded(param); 【参考方案1】:

很确定这是因为您使用的是 jsonToURLEncoded() 函数。您不需要这样做,因为您正在编码的参数实际上是 json 正文。 json 主体是 json,而不是 url 的一部分。 您在“参数”中使用的值很好,可以完全按照您定义的方式发送和接收,无需任何进一步的编码。

【讨论】:

以上是关于为啥当我将帖子发送到我的服务器时字符串更改为 %的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我将查询字符串添加到我的 url 时,它会被 xampp 拒绝(“在此服务器上找不到请求的 URL”)

当我将滚动方向从垂直更改为水平时,为啥集合视图会崩溃?

当我将 var 从 ajax 发送到 php 时,如果 (isset $_Post[]) 不起作用

当我想注册时,角度帖子功能给我一个问题

当我将新闻添加到我的 Firebase 时,有啥方法可以自动发送推送通知

在页面卸载 strophe.js 发送请求两次!为啥?