在scriptlab中调用ajax的CORS问题

时间:2017-04-19 18:43:29

标签: office-js scriptlab

我正在测试excel中的scriptlab插件

我尝试对外部端点执行休息调用,例如

$.ajax({
            url: "https://jsonplaceholder.typicode.com/posts/1",
            dataType: 'JSON',
            headers: {
              'Authorization': 'Basic blablabla',
            })....

以上工作正常。但是在启用CORS的终点上,我得到了一个xhr.readyState 0。

如何避免CORS问题? (我不是终点的所有者)

2 个答案:

答案 0 :(得分:3)

首先,谢谢你试用Script Lab

我首先回答以下问题:是特定于Office加载项和/或脚本实验室的问题。最简单的方法可能是尝试不同的JS游乐场,例如JSFiddle或CodePen。你可以打电话吗?这将隔离CORS和App域的问题(Slava提到的)。虽然

就一般指导而言,我认为你有几个选择

  • 您呼叫的服务可能允许特定网址的例外(例如,它可能会要求您提供您要拨打的网址,并将该网址列入白名单)。如果是这样,请为其指定https://script-lab-runner.azureedge.net的网址(网址本身无法解决,因为它预计会被发布到;但是您编译的运行代码段最终会在其中运行)。
  • 您可以创建自己的服务器(或者可能是一个非常小的计算单位,如Azure Function)来代表您的服务器端进行呼叫(其中CORS不是问题)。您可以让Azure功能本身接受CORS。这样,您就可以通过您自己的服务器实际代理请求,您可以 启用CORS。

希望这有帮助!

答案 1 :(得分:0)

您应该修改您的清单文件并添加到URL Rewriting Middleware标记您的域,以便应用程序信任。默认情况下,您的加载项可以加载与SourceLocation元素中指定的位置位于同一域中的任何页面。要加载与加载项不在同一域中的页面,请使用AppDomains和AppDomain元素指定域。