为什么$ .get跨域工作到Google App Scripts(即为什么它不会被浏览器的同一原始政策阻止)?
例如,我在Google App Script(GAS)上设置了一个非常简单的脚本:
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
function doPost() {
return ContentService.createTextOutput('Hello, world!');
}
然后在浏览器中从一个由不同域托管的页面(我们称之为www.example.com):
var url = "{url of my google app script}";
$.get( url, function( response ) {
console.log(response);
});
它有效!!但它不应该。我从example.com获取页面,并在其中我从谷歌应用程序脚本(由谷歌托管在不同的域上)请求数据。为什么允许这种跨域访问而不是被同源策略阻止?我不使用CORS或JSONP。
如果我不使用浏览器中的$ .get,而是使用:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, false); // false for synchronous request
xmlHttp.send(null);
console.log(xmlHttp.responseText);
我收到了预期的错误。
我完全糊涂了。有人可以向我解释一下吗?