web-dev-qa-db-ja.com

POSTリクエストの「無効なCORSリクエスト」を解決する郵便配達員

Postmanを使用して、統合するAPIをテストし始めたばかりです。

次のエラーが表示されます

無効なCORSリクエスト

次のことに注意してください。

  1. APIはBearerトークン認証(OAuth2)を使用します。これは問題なく動作しています。
  2. ベアラートークンを正常に取得し、環境変数に割り当ててから、RESTful操作に使用しようとします。
  3. 問題は、トークンを使用する後続のRESTful操作にあります。
  4. 古いトークンを(POST操作を介して)使用する場合、有効期限が切れており、許可されていないことを正しく通知します。
  5. 次に、新しいものを生成し、安らかな呼び出しを実行しようとすると、Invalid CORS requestエラー。
  6. cURLを使用しても問題はありません。しかし、私はPostmanに不満を感じています。

私がこれまでに見つけたもの:

  1. Httpでpostmanを使用するPOSTリクエスト-太字の部分は表示されません

他の誰かが同じ問題を抱えている場合に備えて、それを解決する方法を以下に示します。 https://www.getpostman.com/docs/capture にアクセスして、chromeブラウザ。インターセプター拡張機能をクリックし、[クロムに追加]を選択します。信号機のように見えるブラウザと郵便配達員の両方の右上に新しいアイコンが追加されました。郵便配達員でこれをクリックすると緑色に変わります。次に、すべてのリクエストにヘッダーを追加します3番目のライト。すべてのヘッダーはヘッダー名と値で構成されています。入力を開始ヘッダー名と許可されたhttpヘッダーのリストが表示されます。「Origin」を選択します。値のセルにサーバーの完全なURL(「http://」または「https://」を忘れないでください)

  1. 無効なCORS要求に対する予想される応答は何ですか? -これまでにCORSエラーについて見た最良の説明

他の資料では、Access-Control-Allow-Method headerpreflight requests

...そして、CORSフローの説明的なApache Tomcatフローチャートがあります。

enter image description here

16
user919426

再び見つけた答えは次のとおりです。

他の誰かが同じ問題を抱えている場合に備えて、それを解決する方法を以下に示します。 https://www.getpostman.com/docs/capture にアクセスして、chromeブラウザ。インターセプター拡張機能をクリックし、[クロムに追加]を選択します。信号機のように見えるブラウザと郵便配達員の両方の右上に新しいアイコンが追加され、郵便配達員でこれをクリックすると緑色に変わります。

...太字のビットを翻訳したもの:

次に、リクエストにヘッダーを追加します。ヘッダーのキーは「Origin」で、ヘッダーの値はサーバーの完全なURLである必要があります(http:// または https://)。

Chrome/Postmanでは、Interceptorプラグインを使用せずに、起源のキーを持つヘッダーを追加できないことに注意してください。

また、少なくとも私のシステムでは、Interceptorアイコンが信号機のように見えないことに注意してください。

22
Jeff Morriss

バックエンドサービスサイドコードがリクエストの発信元をチェックする場合(CORS攻撃を避けるため)、郵便配達員を介してRest APIをテストするときにこの問題に直面する可能性があります。

これを解決する方法。?

ChromeプラグインPostman Interceptor(- https://chrome.google。 com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl = en )。

このプラグインを正常にインストールすると、PostmanクライアントにPostman Interceptorという小さなアイコンが表示されるので、オンに切り替えるには切り替える必要があります。

これで、以下のようにリクエストヘッダーを追加できます

RequestHeaderキー "Origin" RequestHeader値 "アプリケーションのベースURL"

この画像を確認してください

今、あなたは乾杯に直面しているCORSの問題を克服することができるはずです!

6
puneetShanbhag

サーバーがPostmanのマニュアルHTTP POSTから、orgが無効であることを「chrome-extension:// fhbjgbiflinjbdggehcddcbncdddomop」としてPostmanから受け取っているようです。

クライアント/ポストマン側で解決する理由または方法がわからない。サーバーは、それをそのまま拒否し、403を発行しているようです。

0
bjm88

Postmanリクエストで設定された「Origin」ヘッダーの値は、APIバックエンドで許可される必要があります。たとえば、Spring Boot for APIを使用するには次が必要です。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${cors.allowedOrigins}")
    private String allowedOrigins;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins(allowedOrigins)
            .allowedMethods("*")
            .allowedHeaders("*");
    }

}

allowedOriginsは、許可された発信元のコンマ区切りリストを含むapplication.propertiesプロパティcors.allowedOriginsを使用して設定されます。例:

cors.allowedOrings=http://localhost:8080,http://example.com

postmanの「Origin」値をcors.allowedOriginsのURLに設定します

0