2012-07-14 81 views
12

我有一個簡單的Google Apps腳本ContentService,它發出一個字符串,如「Hello world Sat Jul 14 2012 14:17:21 GMT + 1000(EST)」,網址是https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec,它對匿名開放。隨意點擊它。代碼是:如何針對Google Apps Script ContentService製作XHR/ajax請求?

function doGet() { 
    var output = ContentService.createTextOutput() 
     .setMimeType(ContentService.MimeType.TEXT) 
     .setContent("Hello world " + new Date()); 
    Logger.log(output.getContent()); 
    return output; 
} 

當我在瀏覽器中訪問URL時,它返回字符串(pass.png)。當我在XHR(ajax調用)中使用相同的URL時,它會失敗並出現空錯誤。在Chrome中的開發者工具中,重定向是「(取消)」(fail.png)。這裏是重現故障代碼:

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function loadXMLDoc() { 
    xhr=new XMLHttpRequest(); 
    xhr.onreadystatechange=function() { 
    if (xhr.readyState==4 && xhr.status==200) { 
    document.getElementById("myDiv").innerHTML=xhr.responseText; 
    } 
    }; 
    xhr.open("GET","https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec",true); 
    xhr.send(); 
} 
</script> 
</head> 
<body> 

<h2>Using the XMLHttpRequest object</h2> 
<div id="myDiv"></div> 
<button type="button" onclick="loadXMLDoc()">Get Content via XHR</button> 
</body> 
</html> 

直接請求: DIrect requestpass.png XHR請求: enter image description here 我的問題(希望是不夠具體):如何使從例如一個普通的舊網頁XHR調用.com從匿名Google Apps腳本ContentService腳本獲取內容?

+0

....同樣的問題....有趣。 – 2016-02-13 17:39:36

+0

[Google Apps腳本跨域請求停止工作]的可能重複(http://stackoverflow.com/questions/29525860/google-apps-script-cross-domain-requests-stopped-working) – 2017-02-13 03:05:05

回答

9

我不確定這是目前可能的。我們考慮了JSONP方法(它可以工作;我已經測試過了),但我認爲沒有對ContentService的XHR進行過測試。我們可能需要爲此設置CORS標頭。請在問題跟蹤器上提交功能請求,我們會看看是否可以完成。

+0

在此處完成http:///code.google.com/p/google-apps-script-issues/issues/detail?id=1563,我也會嘗試使用JSONP腳本方法並在此處報告。 – 2012-07-15 22:06:19

+2

JSONP腳本注入工作正常。謝謝。所以,我的死後是JS 101:瀏覽器拒絕做最後的GET,因爲GAS服務器需要(至少)添加一個CORS頭「Access-Control-Allow-Origin:somedomain | *」https:/ /developer.mozilla.org/en/http_access_control。 GAS服務器不會發出這樣的頭文件。在標題不存在的情況下,瀏覽器端腳本受制於相同的源策略(https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript),因此GET的狀態爲「(取消)」。 – 2012-07-16 08:01:57

+2

嗨@PeterHerrmann超過一年後,我陷入了同樣的問題 - 您是否設法找到解決方案?謝謝,福斯托。 – 2013-11-20 22:20:09

相關問題