ホームページ  >  記事  >  ウェブフロントエンド  >  Nginx を使用して Ajax クロスドメインリクエストを回避する

Nginx を使用して Ajax クロスドメインリクエストを回避する

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-04 11:52:421573ブラウズ

今回は、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;
}
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、他の関連記事に注目してください。 PHP中国語ウェブサイトで! 推奨読書:

Ajax で readyState と status を使用する方法


Ajax で get と post を使用するときに発生する問題とその対処方法

以上がNginx を使用して Ajax クロスドメインリクエストを回避するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。