js的跨域問題
阿新 • • 發佈:2019-01-04
跨域問題是由於javascript語言安全限制中的同源策略造成的.
簡單來說,同源策略是指一段指令碼只能讀取來自同一來源的視窗和文件的屬性,這裡的同一來源指的是主機名、協議和埠號的組合
JS原生解決跨域問題:
<script type="text/javascript"> var result = null; window.onload = function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "ip地址/api"; var head = document.getElementsByTagName("head")[0]; head.insertBefore(script, head.firstChild); }; function callback(data) { result = data; } function click() { alert(result.name); } </script>
2、jqurey解決跨域問題:
$.ajax({ async: false, //是否非同步 url: "ip地址/api", //請求地址 type: "GET", //請求型別 dataType: 'jsonp', //資料型別 //jsonp的值自定義,如果使用jsoncallback,那麼伺服器端,要返回一個jsoncallback的值對應的物件. jsonp: 'jsoncallback', //要傳遞的引數,沒有傳參時,也一定要寫上 data: null, //請求的時間 timeout: 5000, //返回Json型別 contentType: "application/json;utf-8", //請求頭設定 //伺服器段返回的物件包含name,data屬性. success: function (result) { //成功時回撥的方法 alert(result.date); }, error: function (jqXHR, textStatus, errorThrown) { //錯誤時返回的提示 alert(textStatus); } });