使用request包的post方式提交base64格式的参数值的奇怪问题
发布于 8 年前 作者 xiashulin 5291 次浏览 来自 问答

声明参数对象

	var queryData = {
			"a": "1",
		 	"b": "2",
	 		"c": "3",
	 		"d": {
			  	"code_str": "/9j/4AAQSkZJRgABAg……"
		  	}
		};

以上code_str的值就是base64格式的字符串,就是一个图片。

	var options = {
		method: 'POST',
		url: 'http://localhost:8088/api/checkcode',
		form: {
			'j': JSON.stringify(queryData)
		},
	};

然后用request(options,function(err,res,body){});来发送请求

奇怪的问题就在于本地接收的这个请求程序(http://localhost:8088)获取不到参数j,但如果code_str参数值没有那么长,就能获取到j参数值。 求各路大神大仙指教。

5 回复

base64采用urlsafe模式, 即把’/’’+‘分别用’+’,'替换掉.

同样的参数,有时候能获取到,有时候获取不到,极其不稳定。我就怀疑是不是node.js不能一次性post这种大量的数据(其实也不大啊,就16000个字符长度),但是我使用火狐浏览器的httprequester工具,用同样的参数post到同样的地址,每次接收请求的程序就能正常获取到。

希望有同学能自己写个示例试一下,就是发请求的程序用node.js request写,post的数据就找个图片,转化成base64编码,然后再有个node.js的接收服务。可以测下看看。

把那一长串参数放在 请求路径后面?j=xxxx…… ,这样post就没有问题了

encodeURICompent(JSON.stringify(queryData))

回到顶部