この記事は主に、Ajax クロスドメインリクエストを回避するために Nginx リバースプロキシを使用する方法に関する関連情報を紹介します。これは非常に優れており、必要な友人は参照できます。
nginx がリッスンするサーバー上の nginx + tomcat。ポート 80 に接続すると、Tomcat はポート 8080 をリッスンします。
私はフロントエンドに詳しくないので、ajaxを使えばコールバックが不要になるのではないかと思っていましたが、フロントエンドのクラスメートがクロスドメインでなければコールバックは必要ないと言い、頼まれました。返された json に追加します。しかし、私は spring-mvc の最も基本的な使用法を学んだばかりで、コールバックを追加する方法がわかりません。次のような実行可能なコードをオンラインで見つけました。 URL マッピングが多すぎて、変更のコストが高すぎるためです。
それで私は賢明に nginx を考えたのですが、これはリバース プロキシに使用されているだけではないでしょうか。あなたは本当に私と同じくらい賢いですね
このアイデアを使えば、簡単に実行できます。ポート 80 でリッスンしているサーバーに場所を直接追加します:
@RequestMapping(method=RequestMethod.GET,value="getProjectStatusList",produces="text/html;charset=UTF-8") @ResponseBody public String getProjectStatusList(HttpServletRequest request, HttpServletResponse response){ Map<String,Object> map = new HashMap<String,Object>(); try{ String callback = request.getParameter("callback"); //System.out.println("token:"+request.getHeader("token")); List<String> list = ss.getProjectStatusList(); map.put("status", "success"); map.put("data", list); ObjectMapper mapper = new ObjectMapper(); //这个拼接是重点。。。 String result = callback+"("+mapper.writeValueAsString(map)+")"; //String result = mapper.writeValueAsString(map); return result; }catch(Exception e){ JSONObject jo = new JSONObject(); jo.put("status", "fail"); jo.put("data", e.getMessage()); return jo.toString(); } }
location /myApp { proxy_pass http://localhost:8080/myApp; }
次に、前のクロスドメイン リクエストを http://site:8080/myApp から http://site/ Non- myApp へのクロスオリジン リクエスト。 上記は私があなたのためにまとめたものです。
関連記事:
AJAXクロスドメインリクエストの問題のNginx実装の詳細な分析Ajaxをクリックしてデータリストを継続的にロードする(グラフィックチュートリアル)
Ajax+Struts2で検証コード検証を実装する関数 (グラフィックチュートリアル)
以上がNginx リバースプロキシを使用して Ajax クロスドメインリクエストを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。