問題タブ [content-negotiation]
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.
java - BufferedImage の提供中に Spring MVC コンテンツのネゴシエーションが失敗する
アプリケーションでイメージを java.awt.BufferedImage オブジェクトとして提供しようとしています。GET を実行しようとすると、結果は次のようになります。
- Accept:image/jpeg は有効な画像をレンダリングします
- Accept:*/* は HTTP 406 を返します
私の servlet-context.xml の関連部分は次のとおりです。
そして、ここに私のコントローラーがあります:
MediaType.IMAGE_JPEG_VALUE は「画像/jpeg」です。*/* の受け入れヘッダーが HTTP 406 を生成することは決してないことを理解しています。これは、このページによると、呼び出し元がそのタイプのコンテンツを受け入れないことを示しています。
これは問題です。これは、ほとんどのブラウザの Accept ヘッダーに「*/*」が含まれており、ユーザーが Accept ヘッダーをハードコーディングしない限り、この画像を表示できないためです。
ここで何か不足していますか?
前もって感謝します。
asp.net - Asp.net WebApi は json、xml、jsonp をサポートしていますか?
この質問はAsp.Net WebApiに固有のものです。
私のグローバルファイルには、次のものを入れました:
JsonpMediaTypeFormatter は、私が持っているカスタム Jsonp フォーマッタです。
この後電話すると、
出来た。
しかし、私のグローバルファイルから削除すると
それからそれは動作しません。
複数のフォーマッターをサポートしたい場合はどうすればよいですか? CORSにHttpClientを使用して、xmlまたはjsonまたはjsopを要求できますか?
誰かアドバイスをお願いできますか?
ajax - IE9は圧縮されたAJAXデータを受け入れません
Webページのデータを返すnode.jsJSONPサーバーがあります。このページはノードサーバーにAJAXリクエストを送信し、JSONPコードを取得します。
圧縮を有効にするまで、これはすべてのブラウザで完全に機能しています。deflateまたはgzip圧縮でAJAX応答を返すと、IE9を除くすべてのユーザーで機能します。これはファイルをデコードしません。IEは、空白の本文が戻ってくることを示しているだけで、エラーはなく、コンソールに出力もありません。
リクエストが通過し、適切なデータがIEクライアントに返されることを確認しましたが、IEはそれを受け入れません。すべてのクライアントに送信される応答ヘッダーは次のとおりです。
追加する必要があります-これらのヘッダーは他のブラウザーに表示されますが、IEには「Content-Encoding:ヘッダー」が表示されません。圧縮が有効になっていてIEで動作するWebサイトでも同じ動作に気付いたため、これは正常であると思います。IBMたとえば、.com-Chromeはコンテンツエンコーディングを表示しますが、IEは表示しません。
では、IEは圧縮をサポートしておらず、他のサーバーがそれを検出していますか?IEがこのデータを拒否する理由を誰かが知っていますか?
乾杯、
ホワイトアトム
asp.net-web-api - ASP.NET Web API は、[要求コンテンツ タイプ] をオンにして、JSON または XML でデータを返します
ASP.NET Web API を使用しているときに、リクエストのコンテンツ タイプが application/xml か application/json かを確認するにはどうすればよいですか? ASP.NET Web API のコンテンツ ネゴシエーションについては知っていますが、データベースから XML 形式でのみデータを取得するため、うまくいきません。したがって、リクエストのコンテンツ タイプを確認できれば、リクエストのコンテンツ タイプが XML の場合は XML を json に変換でき、それ以外の場合は単純に XML を返します。
前もって感謝します。
asp.net-mvc-4 - 組み込みのコンテンツ タイプ ネゴシエーションを使用して決定にアクセスする方法
組み込みのコンテンツ ネゴシエーターを利用して、どのフォーマッターを使用するかを決定するためだけにアクセスしたかったのです。Request.Headers.Accept を使用して、それが json または xml コンテンツ タイプであるかどうかを確認したくありません。その決定には多くのことが関係しているためです。コントローラーレベルでチェックしたり、どのフォーマッターが使用されるか、またはリクエストコンテンツタイプが何であるかを教えてくれるクラスをオーバーライドする方法はありますか?
前もって感謝します。
http - コンテンツ ネゴシエーションは壊れていますか?
最近、Web クローラーに興味を持ちましたが、よくわからないことが 1 つあります。ページを取得し、そこからリンクを抽出し、後で同様に処理するためにそれらをキューに入れる単純なクローラーを想像してみてください。
特定のリンクが別のページではなく、何らかのアセットまたは他の種類の静的ファイルにつながる場合、クローラーはどのように処理しますか? どうやって知るのでしょうか?おそらく、このような大規模なバイナリ データや、xml や json ファイルでさえもダウンロードしたくないでしょう。コンテンツ ネゴシエーションはこれにどのように分類されますか?
コンテンツ ネゴシエーションがどのように機能するかは、Web サーバー側で要求を発行したときに、要求をexample.com/foo.png
満たさAccept: text/html
ない場合は html 応答または Bad Request ステータスを返す必要があります。実生活。Content-Type: image/png
とにかく、私が受け入れるだけだと言っているときでも、そのバイナリデータを送り返しますtext/html
。Web サーバーがこのように動作し、要求している正しい応答を強制しないのはなぜですか?
コンテンツ ネゴシエーションの実装が壊れていますか、それとも正しく実装するのはアプリケーションの責任ですか?
そして、実際のクローラーはどのように機能するのでしょうか? リンクの反対側にあるものを確認するために HEAD リクエストを先に送信することは、非現実的なリソースの浪費と見なされます。
razor - ASP.NET MVC 4 / Web API-Accepts用のRazorレンダラーを挿入:text / html
ASP.NET MVC 4WebAPIを使用してRESTfulWebサービスを作成しています。APIアクセスの場合、JSONを返しますが、すべてが正しく機能するようになると、コンテンツネゴシエーションはデフォルトでXMLとJSONに対して機能するはずです。
私は真にRESTfulなリソース中心のWebサービスに取り組んでいるので、私のURIは実際のリソースを指します。Accepts: text/html
リクエストに含まれる場合(ブラウザにリンクをスローするなど)、リソースのHTML表現を返すことで、これを利用したいと思います。
MVC 4 Web APIのコンテンツネゴシエーションを利用して、Razorテンプレートを使用するtext/htmlのレンダラーを挿入できるようにしたいと思います。これを実行する実例はありますか?
はい、これは「通常の」MVCページとWebAPIの橋渡しです。基本的に、「通常の」MVCのようにRazorビューを検索してレンダリングするために、規則ベースのアプローチを使用するレンダラーを作成したいと思います。規則ベースのビュールックアップロジックを思い付くことができます。 私は単に、 a)text/html
レンダラーをコンテンツネゴシエーションにグローバルに挿入し、 b) Razorエンジンを手動で使用してモデルをHTMLにレンダリングすることを探しています。
http - HTTP コンテンツ ネゴシエーション/圧縮: Accept-Encoding/Content-Encoding で Base64 を使用しますか?
次のアイデアがHTTP コンテンツ ネゴシエーションおよびHTTP 圧縮の精神および/または文言に反しているかどうか疑問に思っています。
状況
HTTP クライアントはリソースを要求します。
HTTP サーバーは次のリソースを返します。
アイデア
クライアントは、エンコードされたリソースを要求することをお勧めします:
サーバーはこのリクエストを受け入れ、エンコードされたリソースを返します。
質問
私はこの考えに満足していません。Accept-Encoding
およびContent-Encoding
ヘッダーが使用されるHTTP 圧縮は、Base64 のようにサイズを大きくすることではなく、データを圧縮することを目的としています。
これらのヘッダーの値として を使用することはbase64
、HTTP コンテンツ ネゴシエーションおよび HTTP コンテンツ圧縮の精神および/または文言に違反していますか?
asp.net-web-api - サポートされていないコンテンツ タイプが要求に含まれている場合、ASP.NET Web API サービスによって返されるステータス コードを構成するにはどうすればよいですか?
Content-Type
サービスでサポートされていない型を含むヘッダーを持つ Web API サービスに対して要求が行われる500 Internal Server Error
と、次のようなメッセージを含むステータス コードが返されます。
415 Unsupported Media Type
代わりに、推奨されるようにステータス コードを返したいと思います (例: here ) 。
これを行うようにサービスを構成するにはどうすればよいですか?