インターフェースのドメイン間のアクセス完全解決策(java五種類のドメイン間ソリューション)
3504 ワード
短所:ポストの要求に対応していません.コードの書き込みが複雑です.ajaxはjsonpに変更されました.
$(document).ready(function() {
$.ajax({
type : "GET",
async : false,
url : "http://b.itmayiedu.com:8081/ajaxB",
dataType : "jsonp",
jsonp : "jsonpCallback", // callback function
success : function(data) {
alert(data["errorCode"]);
},
error : function() {
alert('fail');
}
});
});
バックグラウンドコード@RequestMapping(value = "/ajaxB", method = RequestMethod.GET)
public void ajaxB(HttpServletResponse response, String jsonpCallback) throws IOException {
JSONObject root = new JSONObject();
root.put("errorCode", "200");
root.put("errorMsg", " ");
response.setHeader("Content-type", "text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
// jsonp ,jsonp
writer.print(jsonpCallback + "(" + root.toString() + ")");
writer.close();
}
二、ヘッド応答を設定する@RequestMapping("/ajaxB")
public Map ajaxB(HttpServletResponse response) {
//
response.setHeader("Access-Control-Allow-Origin", "*");
Map result = new HashMap();
result.put("errorCode", "200");
result.put("errorMsg", " ");
return result;
}
三、Http Client転送HttpClientは具体的なロジックを要求します.maven依存は見ることができます.https://blog.csdn.net/qq_41463655/articale/detail/89637160
@RequestMapping("/forwardB")
@ResponseBody
public JSONObject forwardB() {
JSONObject result = HttpClientUtils.httpGet("http://b.itmayiedu.com:8081/ajaxB");
System.out.println("result:" + result);
return result;
}
@RequestMapping("/ajaxB")
public Map ajaxB(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
Map result = new HashMap();
result.put("errorCode", "200");
result.put("errorMsg", " ");
return result;
}
四、NginxはAPIインターフェースゲートウェイを構築する. server {
listen 80;
server_name www.baidu.com;
###A
location /a {
proxy_pass http://a.baidu.com:8080/;
index index.html index.htm;
}
###B
location /b {
proxy_pass http://b.baidu.com:8081/;
index index.html index.htm;
}
}