![](/img/trans.png)
[英]how to make post request baswith ic auth and content type x-www-form-urlencoded
[英]POST request containing ascii characters [x-www-form-urlencoded]
我已經閱讀了很多問題,但是沒有一個解決方案可以解決我的問題。
我正在嘗試提交一個表格,其中頁面的字符集是ISO-8859-1。 我正在使用github.com/request/request 。
從文檔開始,要提交表單,我們基本上需要:
request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })
我試了但是ascii字符不對。 該頁面不接受我發送的內容:
var options = {
url: formData.action,
encoding: 'ascii',
form: { username: 'teste', password: '23dçkasã' }
}
request.post(options, function...)
我也嘗試:
var options = {
url: formData.action,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=iso-8859-1'
},
form: { username: 'teste', password: '23dçkasã' }
}
request.post(options, function...)
編輯:
我也嘗試使用charset=Windows-1252
和Iconv: var iconv = new Iconv('UTF-8', 'ISO-8859-1');
問題出在查詢字符串上:
我用於測試的密碼是
djaçf3
,POST請求djaçf3
的查詢字符串是djaçf3
dja%C3%A7f3
但是ISO-8859-1應該是dja%E7f3
。
所以我使用Node中的querystring.stringify(obj [,sep] [,eq] [,options]) ,最終結果為:
var options = {
url: formData.action,
form: querystring.stringify({ username: 'xpto', password: 'djaçf3' }, null, null, { encodeURIComponent: escape })
}
request.post(options, function...)
Options對象可能包含encodeURIComponent屬性(默認為querystring.escape),如果需要,它可用於對非utf8編碼的字符串進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.