java~jsonp的使用

對於一個後端程序來發,它可能會被多個應用調用,而跨域的問題就來了,使用jsonp來解決這個問題是個不錯的方式,下面說一下關於jsonp的知識

  • JSONP不是新技術,只是在頁面上響應一段js
  • 對於響應的 MIME type ('text/plain')需要註解,它由於受到了X-Content-Type-Options:nosniff的限制,在跨域時你的js是不支持的
  • 基於上面的原因,我們的服務器的接口方法,返回MIME應該是application/javascript

服務端代碼

   @GetMapping(value = "/get-user", produces = {"application/javascript"})
    public String users(@RequestParam String name, @RequestParam String callback) {
        String jsonStr = "{'name':'" + name + "'}";
        return callback + "(" + jsonStr + ")";
    }

前端代碼

<script type="text/javascript">
    $.ajax({
        type: "get",
        url: "http://192.168.3.181:9090/get-user?name=lind",
        dataType: 'jsonp',
        jsonp: "callback",
        success: function (response, status, xhr) {
            console.log(response);	//服務器返回的信息
            console.log(xhr.status);	//服務器返回的信息
        },
        error: function () {
            console.log("請求失敗");
        }
    });

</script>

跨域請求的結果

服務端實際的響應是個js方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章