DBMS にアクセスするためのサードパーティ API として使用する Delphi XE2 DataSnap Rest サーバーを構築しようとしています。
xe2 で REST Datasnap ウィザードを認証と承認とともに使用するときに提供されるサンプル メソッドの機能を拡張しました。
私が作成したすべてのサーバー メソッドが、ブラウザーから直接アクセスしたときに期待されるデータを返すことを確認できます。
この問題は、$.ajax() 呼び出しからサーバーへの認証を試みることから発生します。
ブラウザーのアドレス バーからアクセスすると、ユーザー名とパスワードの入力を求められます。両方に「dev」と入力すると、続行できます。
ajax() のユーザー名とパスワードのパラメーターを「dev」に設定すると、HTTP 401 応答が返されます。
私はそれを正しくやっていると思いますが、コードスニペットは次のとおりです。
$("#contentdiv").click(function(){
$.ajax({
type:"GET",
cache:"false",
username:"dev",
password:"dev",
url:"http://192.168.0.2:8080/datasnap/rest/TServerMethods1/methodname/",
dataType:"jsonp",
statusCode: {
200: function(data){
alert('success ');
}
}
});
});
認証をオフにすると、HTTP 200 応答を正常に取得できます (ただし、JSON Delphi DataSnap に構文エラーが返されますが、それは別の機会に質問します)。
また、知っておく価値があること-手動でログインしてからajaxを実行すると機能します-これは、資格情報がキャッシュされているなどの理由によるものと想定しています。
これらのテクノロジーはどちらもまったく新しいものなので、優しくしてください。重要な可能性があるものを省略した場合は、お知らせください。ここで取り上げます。