POST リクエストでパラメーターとして渡される URL をエンコードしようとしています。URL には「+」文字が含まれており、javascript の encodeURIComponent() はそれらをエンコードしていないようです。なぜこれが当てはまるのでしょうか?
コード:
var url = "http://........"
url += "&url=" + encodeURIComponent(params.url);
var deferred = dojo.xhrPost({
url: url,
headers: { "X-Requested-With": null },
sync: true,
load: function(responseObject, ioArgs) {
console.info(".....................");
params.onSuccess();
},
error: function(error) {
console.error("Error uploading image" + error);
params.onError();
}
});
実際の URL:
http://......../images/I/41zMWkv3+9L._CLa|500,500|41c4imMJhOL.jpg,31PAFct+UsL.jpg_.jpg
エンコードされた URL:
http://......../images/I/41zMWkv3+9L._CLa%7C500,500%7C41c4imMJhOL.jpg,31PAFct+UsL.jpg_.jpg
「|」文字はエンコードされていましたが、「+」はエンコードされていませんでした。
これにより、サーバー側で URL が次のようにデコードされます (「+」は「 」に置き換えられます)。
http://......../images/I/41zMWkv3 9L._CLa|500,500|41c4imMJhOL.jpg,31PAFct UsL.jpg_.jpg
これについて何か助けていただければ幸いです。
ありがとう