1

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

これについて何か助けていただければ幸いです。

ありがとう

4

1 に答える 1