Google Apps脚本JSON与JSONP的区别在于应用访问权限“仅我自己”

时间:2018-11-08 14:36:07

标签: google-apps-script web-applications cors

我希望我的应用可以“仅我自己”访问,并使用doGet返回JSON,但它返回浏览器错误“从源地址'https://script.google.com/macros/s/ ******* / exec'访问XMLHttpRequest” null”已被CORS策略阻止:所请求的资源上没有“ Access-Control-Allow-Origin”标头。”,但是当我返回JSONP时,没有错误,为什么?当我希望我的应用可以“仅我自己”访问时,我需要坚持使用JSONP吗?

function doGet(e) {

  // do whatever this webapp is for
  var result = {}
  if(e.parameter.callback){
    result = { result : "JSONP success" }; 
  } else{
    result = { result : "JSON success" }; 
  }

  // prepare the result
  var s = JSON.stringify(result);
  // publish result
  return ContentService
    .createTextOutput(e.parameter.callback ? e.parameter.callback + "(" + s + ")" : s )
    .setMimeType(e.parameter.callback ? ContentService.MimeType.JAVASCRIPT : ContentService.MimeType.JSON); 
}

客户端脚本

<script>
  $(function() {
    $.ajax({
      type: "get",
      url:
        "https://script.google.com/macros/s/*******/exec?callback=ctrlq",
      data: {},
      dataType: "jsonp"
    });

    $.ajax({
      type: "get",
      url:
        "https://script.google.com/macros/s/*******/exec",
      data: {},
      dataType: "json"
    }).done(function(e) {
      console.log(e);
    });
  });

  function ctrlq(e) {
    console.log(e);
  }
</script>

0 个答案:

没有答案