通过systemjs请求的脚本失败,401 Unauthorized

时间:2016-03-09 18:34:16

标签: javascript tfs angular systemjs

我正在为Team Foundation Server 2015构建hub extension

我的中心HTML页面工作正常,直到我切换到使用systemjs和angular2,此时来自systemjs的任何脚本请求似乎被拒绝,未经授权的401。

我密切关注Angular2 Quickstart指南,一切正常,无需身份验证。

但是一旦我将我的应用程序上传到TFS,systemjs请求的任何脚本都会被拒绝,如下所示:

Error: XHR error (401 Unauthorized) loading http://tfs-server:8080/tfs/_apis/public/gallery/publisher/my-publisher/extension/source-extensions/1.1.2/assetbyname/scripts/main.js(…)

Zone.run @ angular2-polyfills.js:1243
zoneBoundFn @ angular2-polyfills.js:1220
lib$es6$promise$$internal$$tryCatch @ angular2-polyfills.js:468
lib$es6$promise$$internal$$invokeCallback @ angular2-polyfills.js:480
lib$es6$promise$$internal$$publish @ angular2-polyfills.js:451
lib$es6$promise$$internal$$publishRejection @ angular2-polyfills.js:401
(anonymous function) @ angular2-polyfills.js:123
Zone.run @ angular2-polyfills.js:1243
zoneBoundFn @ angular2-polyfills.js:1220
lib$es6$promise$asap$$flush @ angular2-polyfills.js:262

如果我通过脚本标记加载脚本,则没有授权问题。但是当我通过像这样的systemjs这样做时,它会因401错误而失败:

<script>
  System.config({
    packages: {
      scripts: {
        format: 'register',
        defaultExtension: 'js'
      }
    }
  });
  System.import('scripts/main.js')
        .then(null, console.error.bind(console));
</script>

我的问题是:当使用systemjs加载脚本而不是直接加载脚本时,为了避免401未经授权,我还需要做些什么吗?

1 个答案:

答案 0 :(得分:2)

SystemJS将使用XHR加载代码,这可能与此有所不同。

如果您希望SystemJS使用&lt; script&gt;标签注入,尝试:

  System.config({
    packages: {
      scripts: {
        format: 'register',
        defaultExtension: 'js',
        scriptLoad: true
      }
    }
  });

如果它仍然发生,那么肯定是服务器配置。