今回は、Nginxを使用してajaxクロスドメインリクエストを回避するための注意事項と、Nginxを使用してajaxクロスドメインリクエストを回避するための
注意事項について説明します。以下は実際的なケースです。 サーバー上の nginx + tomcat、nginx はポート 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(); } }
nginx をリロードします:
location /myApp { proxy_pass http://localhost:8080/myApp; }
Ajax で readyState と status を使用する方法
Ajax で get と post を使用するときに発生する問題とその対処方法
以上がNginx を使用して Ajax クロスドメインリクエストを回避するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。