使用jsonp进行跨域访问
生活随笔
收集整理的這篇文章主要介紹了
使用jsonp进行跨域访问
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、使用場景
當我們請求非本服務器的資源的時候,瀏覽器會禁止訪問,并提示不允許跨域訪問。此時我們可以使用jsonp這種請求方式,從其他服務器獲取資源。在客戶端調用提供jsonp支持的接口,獲取jsonp格式的數據。
二、客戶端的實現
客戶端使用jsp,用js發送ajax請求,代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>jsonp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><script type="text/javascript" src="./js/jquery-1.9.1.min.js"></script> </head> <body><script type="text/javascript"> jQuery(document).ready(function() {$.ajax( {type : "get",async : false,url : "http://127.0.0.1:8089/test2/TestServlet?id=1",dataType : "jsonp",jsonp : "callback",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(一般默認為:callback) jsonpCallback : "Tcallback",//自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名,也可以寫"?",jQuery會自動為你處理數據 success : function(json) {alert('name: ' + json.name + ',age: ' + json.age);},error : function() {alert('fail');}});}); </script> </body> </html>?
此段代碼相當于get請求http://127.0.0.1:8089/test2/TestServlet?id=1&callback=Tcallback .
三、服務器實現
服務器端使用servlet實現,代碼如下:
public class TestServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{String id = request.getParameter("id");String callback = request.getParameter("callback");//值為Tcallback String name = "zhangsan";int age = 20;String json = String.format("%s({\"name\":\"%s\", \"age\":%s})",callback, name, age);//返回的數據PrintWriter out = response.getWriter();out.print(json);out.flush();out.close();} }轉載于:https://www.cnblogs.com/always-online/p/3859340.html
總結
以上是生活随笔為你收集整理的使用jsonp进行跨域访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第30周一
- 下一篇: 清远工贸职业技术学校清远大学城网