Swagger UI:swagger文件的基本身份验证

时间:2016-08-05 14:26:07

标签: javascript swagger basic-authentication swagger-ui

我的问题是如何在获取swagger文件之前将授权标头添加到我的索引hmtl中。 我从使用基本身份验证的http网址获取swagger文件。所以我需要在调用服务之前提供用户和密码。 所以现在我需要知道我在哪里添加标题。

$(function () {
      var url = window.location.search.match(/[?]url=([^&]+)/);
      if (url && url.length > 1) {
        url = decodeURIComponent(url[1]);
      } else {
        url = "test.json";
      }
      

      hljs.configure({
        highlightSizeThreshold: 5000
      });

      // Pre load translate...
      if(window.SwaggerTranslator) {
        window.SwaggerTranslator.translate();
      }
      window.swaggerUi = new SwaggerUi({
        url: url,
        dom_id: "swagger-ui-container",
        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
        onComplete: function(swaggerApi, swaggerUi){
          if(typeof initOAuth == "function") {
            initOAuth({
              clientId: "your-client-id",
              clientSecret: "your-client-secret-if-required",
              realm: "your-realms",
              appName: "your-app-name",
              scopeSeparator: ",",
              additionalQueryStringParams: {}
            });
          }

          if(window.SwaggerTranslator) {
            window.SwaggerTranslator.translate();
          }
        },
        onFailure: function(data) {
          log("Unable to Load SwaggerUI");
        },
        docExpansion: "none",
        jsonEditor: false,
        defaultModelRendering: 'schema',
        showRequestHeaders: false
      });

      window.swaggerUi.load();

      function log() {
        if ('console' in window) {
          console.log.apply(console, arguments);
        }
      }
  });

1 个答案:

答案 0 :(得分:0)

如果规范在另一个域上,则浏览器将执行飞行前OPTIONS请求以确定CORS。

不幸的是,这是由浏览器自动完成的,因此无法将Authorization标头添加到此请求中。唯一的解决方案是将托管规范的服务器配置为不需要OPTIONS请求的授权。