這裏說的js跨域是指通過js在不同的域之間進行數據傳輸或通信,比如用ajax向一個不同的域請求數據,或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同,都被當作是不同的域。
下表給出了相對http://store.company.com/dir/page.html同源檢測的結果:
我主要使用的是angularjs框架,所以使用了以下這個方法:
var app = angular.module('myApp',[]);
app.controller('siteCtrl',function($scope,$http) {
$http({
method: 'JSONP',
url: 'http://127.0.0.1/sites.php?callback=JSON_CALLBACK',
}).success(function(response) {$scope.names = response.sites;});
});
實現了跨域問題解決,但是我又遇到了一個問題,本地中的sites.php文件中是json數據,而我的json數據格式是沒有問題的,如下:
{
"sites" : [
{
"Name": "菜鳥教程",
"Url": "www.runoob.com",
"Country": "CN"
},
{
"Name": "baidu",
"Url": "www.baidu.com",
"Country": "CN"
},
{
"Name": "sina",
"Url": "www.sina.com",
"Country": "CN"
},
{
"Name": "微博",
"Url": "www.weibo.com",
"Country": "CN"
}
]
}
但是在瀏覽器中總是出現錯誤:
一開始我以爲是我的json格式錯誤,後來驗證後是正確的,最後使用這個解決辦法解決掉這個問題,在sites.php文件中的json數據中添加一個函數angular.callbacks._0(json);
json數據要放到此方法中纔可以正確返回。
這個跨域問題花了我一天的時間才得以解決,還是請大神幫忙解決的,真的是效率太低,希望可以有效學習。