js跨域數據請求解決辦法

本文整理了一下平時工作中碰到的數據跨域請求問題,有需要的朋友可以看下

受js同源策略的影響,不同域名間的請求或者同一域名,不同端口的url時,就會變成不被允許的跨域請求問題。


這時該怎麼辦,小菜我做了如下的一些整理。

一、jsonp

也就是將請求的url寫入到script標籤中,寫法可分爲直接寫死和動態載入。

1.通過script標籤引入,直接寫死src中的url地址:

<script type="text/javascript">
function callback(data) {
console.log(data);
}
</script>
<script src="http://www.example.com.cn/product.jsp?id=5&jsonp=callback"></script> 

這裏我定義一個callback的函數,然後用script標籤的src屬性跨域請求數據,那麼,product.jsp的內容經過約定,需要寫成這樣:

callback({"id": "3", "name": "leisure"});

調用方法:



2.動態加載script標籤:

<script>
var callback = function(data) {
  console.log(data);
};
var script = document.createElement('script'),
  body = document.getElementsByTagName('body');

script.src = 'http://www.example.com.cn/product.jsp?id=5&jsonp=callback';
body[0].appendChild(script);
</script>


二、ajax

<script src="js/jquery-1.11.3.js"></script>
<script>
$(function(){
  $.ajax({
    async: false,
    type: "GET",
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: 'callbackfunction',
    url: "http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js",
    data: "",
    timeout: 3000,
    contentType: "application/json;utf-8",
    success: function(msg) {
      console.log(msg);
    }
  });
})
</script>


三.chrome瀏覽器

如果使用的是chrome瀏覽器,那就方便很多,只需修改下瀏覽器的參數即可。

關閉所有打開的Chrome。(重要)。否則,將沒有效果!
谷歌瀏覽器,C:\Users\lenovo\AppData\Local\Google\Chrome\Application\chrome.exe --disable-web-security --user-data-dir=D:\Chorme



以上就是爲大家分享的3種常用的js跨域請求數據的方法,希望對大家的學習有所幫助。



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