問題タブ [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.
apache - mod_rewrite / RewriteCond ルールを使用したコンテンツ ネゴシエーション
Github ページで一連のファイル(RDF/XML、Turtle、JSON-LD などの異なるシリアル化形式を持つ同じ RDF コンテンツ) をホストし、w3id URLを永続的な識別子として使用するというユース ケースがあります。
さらに、そのパーマネント URL でコンテンツ ネゴシエーションを行いたいと考えています。ファイルを Apache サーバーでホストしている場合、これは些細なことですが、残念ながら Github ページはコンテンツ ネゴシエーションをサポートしていません。そこで、URL 書き換えルールでどこまでできるか試しています。
したがって、考え方は次のようになります。
現在、私のルールは次のようになっています。
これは大部分のケースで機能しますが、いくつかのまれなケースでは機能しません。たとえば、次のような受け入れヘッダーがある場合
これは application/rdf+xml を返します (最初のルールが一致するため) が、コンテンツ ネゴシエーションによれば turtle を返す必要があります。このコーナーケースを処理するルールを改善する方法を知っている人はいますか?
asp.net-web-api2 - Web API 2.2 は常に JSON コンテンツを返します
Accept
以下の単純な Action メソッドは、ヘッダーが に設定されているかどうかに関係なく、常に JSON を返しますapplication/xml
。コンテンツ ネゴシエーションは、この同じコントローラーにある他のアクションでも正常に機能します。
これがコンテンツ ネゴシエーションを実行せず、代わりに常に JSON を返す原因は何ですか?
rest - HTTP コンテンツ ネゴシエーションはエラー メッセージに適用されますか?
クライアントが application/xml の Accept ヘッダーを送信する場合、エラー メッセージ (500 など) の本文も xml にする必要がありますか? それとも、Accept ヘッダーは 200 レベルの応答にのみ適用されますか?
http - Accept ヘッダーが html の場合にのみ、Nancy が json または Xml と 406 を返すことを許可する
私はナンシーのエンドポイントを書いていますが、本当にシンプルであるべきだと思うことをしたいと思っています。json または xml のいずれかでコンテンツを返すことをサポートしたいのですが、html またはその他のタイプが 406 を返すように要求された場合はサポートされていません。XML または JSON のみを簡単に強制できます。また、if (accept is html) return 406 を実行できると思いますが、コンテンツ ネゴシエーション サポートでこれがサポートされていると思います。
誰でも光を当てることができますか?
spring - ファイル拡張子を持つSpring URI PathVariableが機能しない
コントローラー メソッドを呼び出す前に、次の要求のファイル拡張子 (.jpg) が削除されている理由がわかりません。
パス拡張を優先しないようにコンテンツ ネゴシエーションを設定しました。
私のコントローラーはこれです:
PlatformWebAppConfig
また、上記のクラスに以下を追加しようとしましたが、うまくいきませんでした:
私は問題をデバッグしようとしましたが、設定が false であり、コンテンツ ネゴシエーション戦略が設定されていないことContentNegotiationManagerFactoryBean.afterPropertiesSet
は間違いありません (予想どおり)。favorPathExtension
アップデート:
リクエストのマッピングを
ファイル名には拡張子が含まれますが、これは、これらすべての構成ツールを設定しても何も達成されなかった理由を説明していません????
php - ヘッダーに Accept が設定されていない Zf2 Apigilty がクライアント要求を受け入れるようにする方法
最近、残りのサーバーを Zf2 Apigility にアップグレードしました。コンテンツ ネゴシエーションの設定は次のとおりです。
問題は、クライアント (mobie アプリ) が既に展開されており、http ヘッダーに Accept フィールド設定なしで投稿要求を送信することです。そのため、サーバーから常に次の406エラーが発生しました。
したがって、ヘッダーに Accept がないクライアントからのそのような要求をサーバーに受け入れる方法を知っている人はいますか?
servicestack - ServiceStack メディア タイプ
私はjsoiapiドキュメントを読んでいます
誰かがこれを理解するのを手伝ってくれますか
サーバーの責任
サーバーは、応答ドキュメント内のすべての JSON API データを、ヘッダー Content-Type: application/vnd.api+json をメディア タイプ パラメータなしで送信する必要があります。
リクエストがヘッダー Content-Type: application/vnd.api+json とメディア タイプ パラメータを指定する場合、サーバーは 415 Unsupported Media Type ステータス コードで応答する必要があります。
リクエストの Accept ヘッダーに JSON API メディア タイプが含まれていて、そのメディア タイプのすべてのインスタンスがメディア タイプ パラメータで変更されている場合、サーバーは 406 Not Acceptable ステータス コードで応答する必要があります。
注: コンテンツ ネゴシエーション要件は、この仕様の将来のバージョンが拡張ネゴシエーションとバージョン管理にメディア タイプ パラメータを使用できるようにするために存在します。
Servicestackでこれを達成するにはどうすればよいですか?上記を一粒の塩で取る必要がありますか?
サーバーは、応答ドキュメント内のすべての JSON API データを、ヘッダー Content-Type: application/vnd.api+json をメディア タイプ パラメータなしで送信する必要があります。
これは、EndPointHostConfig で DefaultContentType = MimeTypes.Json を使用して、AppHost で実行できます。
しかし、残りの2つはどうですか?
rest - 同じ URL で異なるコンテンツ タイプを提供できる場合は、Vary に accept を含める必要がありますか?
同じ URL が同じリソースの異なるコンテンツ タイプを提供できる場合、 Vary に Accept を含める必要がありますか? それとも、ブラウザのキャッシュとプロキシはそれを暗黙的であると認識していますか?
例:
この対応
またはこれ