問題タブ [angular-http]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - $httpBackend を本番環境で使用してデータ サービス リクエストを抽象化することは適切ですか?
私のアプリケーションには、コントローラーの情報を取得するデータ サービスがあります。この情報は、ローカル ストレージ、ウィンドウ、または ajax リクエストから取得される場合があります。私が直面している問題は、$q約束の応答が応答のように見えない$httpことです。
サービスはここ$qでうまく機能しますが、指定されたオブジェクトとして解決されます。私はそれが応答をラップすることを本当に期待していません。私はこれを達成$httpBackend できることを知っています。
しかし、このサービスは MockE2E ライブラリで使用されており、これが意図された用途であったとは思えません。後でこれを中止する方法や、同じリクエストで2回使用した場合にどうなるかはわかりませんが、これらの質問を理解することはできます. 私のもう 1 つの懸念は、$http に渡すのと同じ構成オブジェクトを $httpBackend に渡す方法がないように見えることです。$httpBackend はメソッド、URL、本文、およびヘッダーのみを受け入れますが、$http config ではパラメーターを指定できます。
現在、私の回避策は、自分で $http のようなラッパーを作成することです。
しかし、これはあまりエレガントではありません。これを行うためのより良い/正しい方法はありますか?
angularjs - インターセプターを使用して $http 404s を処理する AngularJS - promise が定義されていないエラー
APIエンドポイントから404を処理したいAngularアプリがあります。主要なコンポーネントは次のとおりです。
問題は、 のエラーが発生することですReferenceError: promise is not defined at response。これは、 が をConcernService延期するためpromiseですか? これにどのように対処すればよいですか?
php - PHP へのノンブロッキング Ajax リクエスト
PHP を使用してリモート サーバーから (大きな) ファイルをダウンロードしていますが、このダウンロードは Web ページのダウンロード ボタンをクリックすることでトリガーされます。
したがってdownload、Web ページのボタンをクリックすると、PHP 関数に対してAjax( angulars を使用して) 要求が行われます。$httpその関数は、を使用してダウンロードをトリガーしますcURL。
それまでの間、Ajax を使用して PHP サイトに別のリクエストを行いたいと考えています。Pendingただし、ダウンロードが進行中である限り、他のすべての Ajax リクエストにはステータスが表示されます。
したがって、基本的に、ダウンロードは PHP への他のすべてのリクエストをブロックしています。この閉塞を回避する方法はありますか?
angularjs - AngularJS $http.post
$http.post を実行して応答を得ようとしています。いくつかの方法で試しましたが、うまくいきません。私が送信しているデータ (userData) は json オブジェクトです。
そして、私はステータスで404を取得しています。
ありがとうございました
angularjs - $httpBackend を URL クエリ パラメータの順序に影響されないようにするにはどうすればよいですか?
Angular.js$httpBackendを使用して、呼び出しをラップするいくつかのサービスをテストしてい$httpます (これは ngMockE2E ではなくngMock にあります)。
expectやのようなものwhenは、URL クエリ パラメータの順序に敏感なようです。たとえば、$httpBackend.when('POST','/apiCall?X=1&Y=2').respond(/* ... */)またはの場合、URL にX=1&Y=2ではなくY=2&X=1$httpBackend.expectPOST('/apiCall?X=1&Y=2')があると、 URL の不一致が発生します。
テスト対象のサービスが、テストを中断することなく URL クエリ文字列パラメーターの順序を自由に変更できるように、テストを作成したいと考えています。$httpBackend のドキュメントでこれを解決する方法を見つけることができませんでした。これを行う正しい方法は何ですか?
angularjs - AngularJS $http.post サーバーは、メソッド OPTIONS を使用したリクエストを許可しません
サーバーに対して HTTP POST を実行しようとしています。
送信する必要があるデータは json オブジェクトです。
問題は、angular の $http.post がメソッドをオプションでオーバーライドすることです。
私はこの構成を作ることができます
オプションから POST に変更しますが、コンテンツ タイプを「application/json」に設定できず、「415 Unsupported Media Type」が表示されます
ありがとうございました
javascript - AngularJS 1.2.14 $http POST エラー応答本文が空です
UPDATE Mar 21
さらに調査した結果、Play フレームワークのバグ、エラー ステータスの XHR 制限も示されているようです:
Play 2.2.1 SimpleResult 4xx Response Body それ、または私が求めるRESTfulnessは、401コードでは不可能です.
以下のように、Angular $http で 401 が 0 ステータス コードを取得するため、両方のスペースでまだ問題があります。RESTfulness については以上です。私がしたいのは、401 Unauthorized の応答本文を提供することだけです。4xxのW3C ページから: 「ユーザー エージェントは、含まれているすべてのエンティティをユーザーに表示する必要があります。」
3月20日更新
さらに調査した結果、XMLHttpRequest 自体の問題が指摘されていますが、以下に何か不足がある場合はお知らせください。Angular の createHttpBackend() 内で定義されているように、xhr.onreadystatechange() コールバック内の生の XHR オブジェクトを吐き出しています。

既知の適切な電子メールとパスワードでログインすると、すべて正常に動作します。

しかし、400 Bad Request (間違ったパスワード) の同じ XHR オブジェクトには空の応答がありますが、さらに重要なことに status=0 です。これは、Mozilla ドキュメントから、要求が送信されなかったことを示しています (ただし、API サーバーが要求を取得して DB を実行していることがわかります) Postman が上記のように動作するため、ルックアップ):

何を与える?Postman はどのように応答を取得しますが、最新の Chrome と Firefox の XMLHttpRequest は混乱していますか?
$http を使用して POST リクエストを送信し、ブラウザー (Chrome と FF) と Postman で競合する応答を取得しています。Postman は正常に動作し、本文も持っていますが、Angular は、テンプレートがキャッシュされたときに Android ブラウザーで奇妙な点を処理するためにいくつかの応答コードを「クリーンアップ」しているように見えますが、生の XHR が発生している場所を $httpBackend で特定することはできません応答本文を傍受します-おそらく、XHRが応答をブロック/キャンセルしているためですか? セキュリティのため?インターセプターも持っていません。
「ハッピーパス」ログインは正常に機能し、コンソール/firebug で一致する 200 OK 応答を取得しますが、400 Bad Request には応答本文がありません。
CORS は nginx で構成され ( http://enable-cors.org/server_nginx.htmlを参照)、ハッピー ログインの成功が機能するため、セットアップは機能します。
私の電話:
Angular はエラー コードを変更しているため、ブラウザーと角度が一致しません。

Postman 経由で同じリクエストを送信すると、400 Bad Request コードは同じですが、予想どおり、本文も json 文字列です。
これが onLoginError() コールバック内の $http CORS 経由で利用できないのはなぜですか?
