2

現在、Ajax.Request を使用して基本認証を使用して Web サービスに接続する Palm WebOS アプリケーションを使用しています。ユーザー名とパスワードを送信するには、URL (つまり、 http://username:password@ip-address:port/ )に含めるだけで、パスワードに英数字以外の文字が含まれている場合に備えて、非常にうまく機能します (たとえば、最近、パスワードに「@」と「&」を含むユーザーからメールがありましたが、URL の記号が適切に解析されなかったため、接続できませんでした)。ユーザーがパスワードに英数字以外のものを使用できるように、資格情報を URL で送信する方法はありますか?

    var username = cookie.get().servers[this.serverIndex].username;
    var password = cookie.get().servers[this.serverIndex].password;
    this.auth = 'Basic ' + Base64.encode(username + ':' + password);
    var baseUrl = 'http://' + url + ':' + port + '/gui/';
    this.baseUrl = baseUrl;


    var request = new Ajax.Request(this.tokenUrl, {
        method: 'get',
        timeout: 2000,
        headers: {
            Authorization: this.auth
        },
        onSuccess: successFunc,
        onFailure: this.failure.bind(this)
    });

応答は次のとおりです (セキュリティ上の理由から URL を削除しました):

{"request": {"options": {"method": "get", "asynchronous": true, "contentType": "application/x-www-form-urlencoded", "encoding": "UTF-8", "parameters": {}, "evalJSON": true, "evalJS": true, "timeout": 2000, "headers": {"Authorization": "Basic c3VubW9yZ3VzOmZyb2dneUAlMjY="}}, "transport": {"readyState": 4, "onloadstart": null, "withCredentials": false, "onerror": null, "onabort": null, "status": 401, "responseXML": null, "onload": null, "onprogress": null, "upload": {"onloadstart": null, "onabort": null, "onerror": null, "onload": null, "onprogress": null}, "statusText": "", "responseText": "", "UNSENT": 0, "OPENED": 1, "HEADERS_RECEIVED": 2, "LOADING": 3, "DONE": 4}, "url": ""
4

2 に答える 2

3

ヘッダー付きの基本認証情報を送信します: http://coderseye.com/2007/how-to-do-http-basic-auth-in-ajax.html

var auth = 'Basic ' + Base64.encode(user + ':' + pass);
Ext.Ajax.request({
    url : url,
    method : 'GET',
    headers : { Authorization : auth }
});
于 2010-07-21T12:24:50.240 に答える
0

を使用して送信する前に、ユーザー名とパスワードをエンコードしてみることができますencodeURIComponent

より一般的には、IE8 でこのメソッドをテストしましたか? 通常のリクエストでは機能しなくなったためusername:password@、セキュリティ上の理由からスキームは無効になっています。

ただし、Ajax リクエストではまだ許可されている可能性があります。

于 2010-07-21T12:03:10.060 に答える