我有一个简单的Google Apps Script ContentService,它发出的字符串类似于“ Hello world Sat Jul 14 2012 14:17:21 GMT + 1000(EST)”。网址为https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ / exec,它对匿名者开放。随意点击。代码是:
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的开发人员工具中,重定向为“(canceled)”(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>
直接请求: XHR请求: 我的问题(希望足够具体):如何从example.com上一个普通的旧网页进行XHR调用,以从匿名Google Apps Script ContentService脚本获取内容?
我不确定目前是否可行。我们考虑了JSONP方法(该方法有效;我已经对其进行了测试),但是我认为针对ContentService进行XHR测试从未经过过测试。为此,我们可能需要设置CORS标头。请在问题跟踪器上提交功能请求,我们将看看是否可以完成。