1

私が構築している REST サービスを使用するダーツ アプリケーションを開発しています。ログイン エンドポイントに対して ajax リクエストを実行するために、dart コードを書き始めました。ただし、dart ajax リクエストが失敗した場合でも、成功したと主張しています。

サービスを起動して実行していません (実行していたとしても、現在間違ったドメイン/ポートを使用しているでしょう) が、このコードは毎回 200 OK HttpResponse を返します。

class PlayerController {

  const PlayerController();

  static const String LOGIN_URL = "login";

  void login(String username, String password) {
    Map<String, String> headers = {"Content-Type": "application/x-www-form-urlencoded"};
    String body = "j_username=$username&j_password=$password&submit=Login";
    HttpRequest.request(LOGIN_URL, method: "POST", requestHeaders: headers, sendData: body)
      .then((request) => processLogin(request, username))
      .catchError((e) => processLoginError(e));
  }

  void processLogin(var whatIsThis, String username) {
    query("#loginButton").text = "Logout";
    //TODO get the player then set them
  }

  void processLoginError(var e) {
    print("total failure to login because of $e");
  }
}

常に processLogin メソッドにヒットし、processLoginError メソッドにヒットすることはありません。これがなぜなのか誰にも分かりますか?この ajax リクエストを別の方法で実行する必要がありますか? (推測できなかった場合は、春のセキュリティにサインインしています)。

ファイルシステムのリクエストは常に成功するとどこかで読みました。Dart は何らかの形でこれを Web リクエストではなくファイル システム リクエストにしていますか?

4

1 に答える 1

2

これは、リクエストが実際に正常に完了するためです。

「ログイン」へのリクエストは実際に呼び出しますhttp://127.0.0.1:6521/[Path_to_your_Dart_file]/login

Dartium (127.0.0.1:6521) で実行されているときに Dart によって開始されたサーバーは、HTTP 200 と空の応答本文ですべての POST 要求に応答するようです。

メソッドを POST から GET に変更すると、期待どおりに失敗します。

サーバーがこれを行う理由については、よくわかりません。これは Dart チームが回答する必要があります。

于 2013-08-08T15:03:14.150 に答える