ブラウザはデータを直接取得できるが、ajax投稿は取得できないという問題を解決します

分析

  1. コンソールを開き、次のエラーメッセージを見つけます。
CORSポリシーによってブロックされています:「Access-Control-Allow-Origin」ヘッダーco…
  1. また、直接取得にはデータがあり、サーバーが正常であることを示しています
  2. ブラウザf12を使用してパケットをキャプチャし、ブラウザajax非同期リクエストがサーバー応答のJSONデータを取得しないことを確認します
  3. パラメータcopyajax非同期リクエストアドレスを使用して、ブラウザに直接入力し、Enterキーを押します。jsonデータが正常に応答されたことがわかりました。
  4. プロのフィドラーを使用してパッケージをキャプチャすると、ajax非同期POSTリクエストサーバーがjsonデータに応答しましたが、ブラウザーでは応答しなかったことがわかりました。
  5. ブラウザがサーバーの応答データをブロックしたと結論付けることができます
解決

サーバー側フィルターにdoFilter()応答ヘッダーを設定して、クロスドメイン要求応答をシールドするブラウザーのデータ問題解決します

HttpServletResponse response  = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;

//http://xxx.xxx.xxx.xxx是你的前端地址 不是80端口有端口请设置端口http://xxx.xxx.xxx.xxx:端口号
response.setHeader("Access-Control-Allow-Origin","http://xxx.xxx.xxx.xxx");
response.setHeader("Access-Control-Allow-Credentials","true");

filterChain.doFilter(request, response);

注意

http://xxx.xxx.xxx.xxxhttp://xxx.xxx.xxx.xxx:80ブラウザは異なります。フロントエンドポートがポート80の場合はhttp://xxx.xxx.xxx.xxx、ポート80を後ろに追加せず、直接使用してください。http://xxx.xxx.xxx.xxx

おすすめ

転載: blog.csdn.net/qq_41490274/article/details/100561308