4

openid認証ライブラリであるバックエンドサーバーに投稿しています。これは、サーバーのURLを指すアクションを持つ単純なフォームがある場合に機能します。

ただし、$http.postメソッドを使用すると失敗します。ヘッダーを比較し、content-typeをurl-formエンコードに変更しました。これで問題の一部は解決しますが、サーバーからのリダイレクトは失敗します。

通常のフォームの投稿と、この動作を引き起こしているAngularの$ http.postの違いについて何か考えはありますか?

4

2 に答える 2

2

ただし、サーバーからのリダイレクトは引き続き失敗します。

ajaxリクエストは、到達した最終ページのhttpステータスコードを提供するため、サーバーリダイレクトはフロントエンドに戻ることは想定されていません。したがって、ajaxでリクエストしたページが別のページにリダイレクトされている場合は、200のステータスが表示されます。このhttp://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-methodのw3cドラフトを読むことができます。

于 2012-12-21T05:58:12.827 に答える
1

違いを本当に知りたい場合は、Fiddlerのような無料のツールを設定することをお勧めします。次に、リクエストが出発および/または到着するときにリクエストを確認し、すべての違いを確認できます。

ただし、理論的には、フォームタグまたは$http.post呼び出しで設定した違いのみがあります。どちらもPOSTを使用していると思います。一方は、他方とは異なるコンテンツタイプ(フォームタグのenctype)を使用している可能性があります...「multipart/form-data」または「application/x-www-form-urlencoded」と「application/json」のように。 ..これは、送信するデータの種類をサーバーに通知する重要な要素です。また、サーバーが一方のタイプを予期していて、もう一方のタイプを取得している場合は、それが失敗の原因である可能性があります。

ただし、コードを見ずに言うのは難しいです。

于 2012-12-20T14:45:21.857 に答える