問題タブ [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.

0 投票する
1 に答える
1797 参照

php - コンテンツ ネゴシエーションを使用した Laravel 4 RESTful API

laravel を使用して RESTFul API を使用しています。プロジェクトでコンテンツ ネゴシエーションを使用したいのですが、その方法がわかりません。API バージョンごとにコントローラーを分けています。API バージョンを区別し、バージョンに応じて正しいコントローラーを使用したいと考えています。

私のAPIルーターは次のとおりです。

ルート グループで使用する api.type フィルターを作成する必要がありますか、それともルート グループ クロージャーまたは各コントローラーで使用する必要がありますか?

0 投票する
4 に答える
394 参照

php - リチウム コンテンツ ネゴシエーションではすべてのデータが表示されます - どのように除外するのですか?

私はそれがインデックスアクションでapp/controllers/UsersController.php簡単にできるようにしました。Users::find('all');

パス/users/indexは、ユーザー データのプレーンな 'ol HTML 出力をレンダリングします。このパス/users/index.jsonは、HTML 出力に相当する JSON をレンダリングします。これは、パスワード (ハッシュされていますが、それでも...) も公開するという事実を除けば、優れています。

これを回避するには、次の 2 つのオプションがあります。

  1. fieldsファインダーで明示的に指定します。
  2. Media::render()機密データをフィルタリングして設定解除します。

長期的には、#2の方が維持しやすいと思います。ご意見はありますか?3 番目のより良い代替手段はありますか?

これは私が#2を実装した方法です:

アドバイスをいただければ幸いです。

0 投票する
1 に答える
932 参照

asp.net-web-api - Web API でのファイル ダウンロードのコンテンツ ネゴシエーション

PDFファイルを返すWeb API RESTサービスメソッドがあります。コードは次のとおりです。

私の疑問は、API の他のメソッドです。応答のメディア タイプにコンテンツ ネゴシエーションを使用しました。ここでもコンテンツ ネゴシエーションを使用する必要がありますか?? ここで必要かどうか?

0 投票する
2 に答える
1219 参照

http - コンテンツ ネゴシエーションによるキャッシングをサポートする CDN ソリューションはどれですか?

コンテンツ ネゴシエーションを通じて一連のリソースを提供しています。Accept具体的には、クライアントのヘッダーに応じて、任意の URL をさまざまな形式で表すことができます。

この例は、Facebook で見ることができます。

  • curl -H "Accept: application/json" http://graph.facebook.com/daft-punk
    結果は JSON になります
  • curl -H "Accept: text/turtle" http://graph.facebook.com/daft-punk
    結果はタートル

URL とクライアントのヘッダーに基づいてコンテンツをキャッシュするCDNを探しています。Accept

うまくいかない例

CloudFlare はこれをサポートしていません: 1 つのクライアントが HTML を要求した場合、その URL への後続のすべての要求は、好みに関係なく、HTML 表現を受け取ります。他の人にも同様の問題があります。

たとえば、CloudFlare をgraph.facebook.com配置すると (そして、デフォルトではキャッシュしない「拡張なし」リソースをキャッシュするように構成すると)、正しく動作しません。

  1. http://graph.facebook.com/daft-punkcurl を使用して JSON で要求します。
    それに応じて、CloudFlare はサーバーから JSON オリジナルを要求し、それをキャッシュして、提供します。
  2. http://graph.facebook.com/daft-punkはブラウザを介して (つまり HTML で) 要求します。
    それに応じて、元のサーバーが HTML バージョンを送信したとしても、CloudFlare はキャッシュされた JSON (!) 表現を送信します。

代わりに何が必要か

正しい動作は、2 番目のクライアントのAcceptヘッダーが異なるため、CloudFlare がサーバーに再度要求することです。この後、同様のAcceptヘッダーを持つリクエストをキャッシュから提供できます。

コンテンツ ネゴシエーションをサポートし、ネゴシエートされたコンテンツをキャッシュする CDN ソリューションはどれですか? したがって、 Acceptを尊重するだけでは不十分で
あることに注意してください。ネゴシエートされた応答もキャッシュする必要があります。



PS1: 独自のキャッシュ サーバーをサポートするのは簡単です。たとえば、nginx の場合:

クライアントのAcceptヘッダーが、キャッシュのインデックスを作成するキーの一部であることに注意してください。CDNでそれが欲しい。


PS2: 表現ごとに異なる URL を使用することはできません。私のアプリケーションはLinked Dataドメインにあり、そこでは URL が識別に重要な役割を果たします。

0 投票する
1 に答える
130 参照

javascript - コンテンツ ネゴシエーション - Firefox で画像を表示する

私は画像のミニチュアのギャラリーを持っています。それらのいずれかをクリックすると、フルサイズの同等物が新しいタブで開きます。image に多くのバージョンがあるとしましょう.jpg,.gif and .png。適切な (ブラウザが最も必要としている) ファイルが表示されるように、ファイルを変更するにはどうすればよいですか?

私のFirefoxの設定は次のとおりです。

そして私の.phpファイル:

0 投票する
1 に答える
33 参照

php - コンテンツ ネゴシエーション値を順不同で送信できますか?

ヘッダーからユーザーの言語/ロケールを判断していますがAccept-Language、それらが順不同で渡される可能性があるかどうか疑問に思っていました。phpのソート関数を書いて降順になっていることを確認しましたが、不要であれば削除したいと思います。

適切な順序の例:

Accept-Language: fr-ca, fr; q=0.8, en-ca; q=0.6, en-us; q=0.4, en; q=0.2

不適切な注文の例:

Accept-Language: fr-ca, en; q=0.2, en-ca; q=0.6, en-us; q=0.4, fr; q=0.8

0 投票する
0 に答える
1109 参照

json - パス拡張を使用した Spring コンテンツ ネゴシエーション (拡張を介して Accept-Header を設定しますか?!)

部分的に機能する 2 つの異なる @Controller メソッドで同じ URL パス ハンドルを使用したいと考えています。これが私が持っているものです:

WebMvcConfig:

コントローラ:

現在の動作:

良いもの:

GET /test/profile(with Accept=*/*) コールgetProfile()

GET /test/profile(with Accept=application/json) コールgetProfile()

GET /test/profile.json(with Accept=*/*) コールgetProfile()

GET /test/profile.json(でAccept=text/vcard) を返します406 NOT ACCEPTABLE

GET /test/profile(with Accept=text/vcard) コールgetProfileVCard()

GET /test/profile.vcf(with Accept=text/vcard) コールgetProfileVCard()

欠陥のあるもの:

GET /test/profile.vcf(with Accept=*/*) コールgetProfile()とリターン406 NOT ACCEPTABLE.

間違ったメソッドが呼び出されるのはなぜですか? favorPathExtension(true)パス拡張が設定されているときにSpringがAccept-Headerをオーバーライドするように設定したと思いましたか?

編集:

私もfavorPathExtension(true).ignoreAcceptHeader(true).favorParameter(true)自分の設定で設定しましたが、それでも機能しませprofile?format=vcfprofile.vcf?format=vcf