java~jsonp的(de)使(shi)用(yong)
對于(yu)一(yi)(yi)個后端程序來(lai)發,它(ta)可(ke)能會(hui)被多個應用(yong)調用(yong),而(er)跨(kua)域的問題(ti)(ti)就來(lai)了,使用(yong)jsonp來(lai)解(jie)決這個問題(ti)(ti)是個不錯的方式,下(xia)(xia)面說一(yi)(yi)下(xia)(xia)關于(yu)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: "//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方法

