[英]Simple javascript doesn't work in safari
我幾乎沒有使用javascript的經驗,並且正在嘗試使我的網站從Google驅動器文件中加載一些html代碼。 除野生動物園外,此功能在所有瀏覽器中均可正常運行。 有誰知道如何解決這個問題?
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function() {
$("#leaderboard").load("https://www.googledrive.com/host/0B7VK-PTvOFWwRnVzUUlRX1BQZUU");
});
</script>
此安全問題被稱為同一來源策略
在計算中,同源策略是Web應用程序安全模型中的重要概念。 該策略允許在源自同一站點的頁面上運行的腳本(方案,主機名和端口號1的組合 )可以訪問彼此的DOM,而沒有特別的限制,但是可以阻止訪問不同站點上的DOM。 1除非服務器提供Access-Control-Allow-Origin(CORS)標頭,否則同源策略也適用於XMLHttpRequests。 值得注意的是,WebSocket不受制於同源策略。
這種機制對現代Web應用程序具有特殊意義,因為Web服務器廣泛依賴HTTP cookie來維持經過身份驗證的用戶會話,因為服務器根據HTTP cookie信息進行操作以顯示敏感信息或執行狀態更改操作。 必須在客戶端維護不相關站點提供的內容之間的嚴格分隔,以防止丟失數據機密性或完整性。
由於此安全問題,jQuery.load函數無法從某些瀏覽器的其他域獲取內容。 同樣的事情也適用於XMLHttpRequests函數。
$('#leaderboard').load('http://google.com'); //May work and may not work!
但是您可以改用Jquery.ajax或Jquery.get函數。
$.ajax({
url: 'http://google.com',
type: 'GET',
success: function(res) {
// your code
}
});
// Works with $.get too!
嘗試
$(function () {
$.ajax({
url: window.location.protocol
+ "//www.googledrive.com/host/0B7VK-PTvOFWwRnVzUUlRX1BQZUU",
cache: false,
context: $("#leaderboard"),
dataType: "html"
})
.then(function(data) {
$(this).html(data)
}, function(jqxhr, textStatus, errorThrown) {
console.log(errorThrown)
});
});
jsfiddle http://jsfiddle.net/qvc27vmq/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.