1

kubernetes で v1.7.9 を使用すると、次の問題に直面しています。

レート制限 ( traefik.ingress.kubernetes.io/rate-limit) とカスタム レスポンス ヘッダー ( traefik.ingress.kubernetes.io/custom-response-headers) を設定した場合、リクエストがレート制限されると、カスタム ヘッダーは設定されません。これらのプラグイン間の順序/優先度が原因だと思います。そして、レート制限に達したらできるだけ早く応答を返す必要があることに完全に同意しますが、必要に応じて優先順位を変更できればいいと思います。

したがって、問題は、ミドルウェアの優先順位を設定できるかどうかです。

ドキュメントにもgithubの問題にも手がかりが見つかりませんでした。

具体的なユースケース:

レート制限が開始された場合でも、CORS ポリシー ヘッダーを常に設定する必要があります。そうしないと、ブラウザーが許可しないため、SPA が応答オブジェクトを取得できないため、これが必要です。

Access to XMLHttpRequest at 'https://api.example.com/api/v1/resource' from origin 'https://cors.exmaple.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

この場合、ヘッダーミドルウェアの優先度をレート制限ミドルウェアよりも高く設定できれば、それは良い解決策になります。

4

3 に答える 3

0

通常の Web ページは、XMLHttpRequest オブジェクトを使用してリモート サーバーからデータを送受信できますが、同じオリジン ポリシーによって制限されます。拡張機能はそれほど制限されていません。拡張機能は、最初にクロスオリジンのアクセス許可を要求する限り、そのオリジンの外部にあるリモート サーバーと通信できます。

1.ローカル マシンでテストを行い、localhost をローカル IP に置き換えます。次のコード行で CORS を達成する必要がありましたrequest.withCredentials = true ; ここで、request は XMLHttpRequest のインスタンスです。クロス オリジン アクセスを許可するには、CORS ヘッダーをバックエンド サーバーに追加する必要があります。

2.ヘッダーミドルウェアの後にレート制限ミドルウェアを実行する独自のスクリプトを作成するだけです。

于 2019-06-19T12:39:24.677 に答える