2017-10-12 179 views
2

我有一个ASP.NET Core 2.0 Web API,我通过Swashbuckle添加了Swagger。这很好。Swagger可以呈现app.UseDeveloperExceptionPage()的内容吗?

我还在ASP.NET Core中启用了app.UseDeveloperExceptionPage()选项。这很好。

但他们一起玩得不好。因为SwaggerUI只是将返回的HTML显示为文本。

对于GET请求,它不是一个大问题,因为我只是将url粘贴到浏览器中。但对于POST不起作用。 所以我想知道是否有一种方法来使SwaggerUI呈现html时Content-Type标题是text/html。我一直无法找到任何与此相关的,这是一个令人费解的一点:)

回答

1

从招摇开发者:

我们必须清理HTML,以避免注射标签并启用XSS漏洞 。所以是的,原始html是你应该看到的。

但是,您可以自行更改招摇,ui.js由nicksellen提供

--- swagger-ui.js 2015-09-19 20:58:10.000000000 +0200 
+++ swagger-ui.js 2015-11-16 13:45:26.958266568 +0100 
@@ -31855,9 +31855,10 @@ 

    // HTML 
    } else if (contentType === 'text/html') { 
-  code = $('<code />').html(_.escape(content)); 
-  pre = $('<pre class="xml" />').append(code); 
- 
+  var iframe = document.createElement('iframe'); 
+  iframe.srcdoc = content; 
+  iframe.style = 'width: 100%; height: 500px;'; 
+  pre = iframe; 
    // Plain Text 
    } else if (/text\/plain/.test(contentType)) { 
     code = $('<code />').text(content); 

代码为https://github.com/swagger-api/swagger-ui/issues/1748

要使用Swashbuckle整合这一变化:

  1. GitHub下载Swashbuckle
  2. swagger-u i.js位于bower_components \ swagger-ui \ dist文件夹中的Swashbuckle.AspNetCore.SwaggerUI项目中。进行上述编辑并编译。
  3. 在项目中,删除Swashbuckle NuGet包,加入到步骤中创建的DLL文件的引用2.

由于的NuGet不再管理这个包,这将是由你来定期检查Swashbuckle项目如果你想更新,重复这个过程。

+0

甜蜜的感谢。现在我只需要弄清楚如何将其与Swashbuckle进行整合:) –

+0

编辑答案包括如何与Swashbuckle集成。 –

+0

你是男人:) –