为啥当我将帖子发送到我的服务器时字符串更改为 %
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[]) 不起作用