我有一个ASP.NET Core 2.0 Web API,我通过Swashbuckle添加了Swagger。哪个好。
我还在ASP.NET Core中启用了app.UseDeveloperExceptionPage()
选项。哪个好。
对于GET请求,这不是一个大问题,因为我只是将网址粘贴到浏览器中。但对于没有效果的POST。
所以我想知道当Content-Type
标题为text/html
时是否有办法让SwaggerUI渲染html。我一直无法找到与此相关的任何内容,这有点令人费解:)
答案 0 :(得分:3)
来自swagger devs:
我们必须清理HTML以避免注入标记并启用XSS 漏洞。所以,是的,原始的html是你应该期待看到的。
但是,您可以自行更改为swagger-ui.js
--- 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);
代码由nicksellen在https://github.com/swagger-api/swagger-ui/issues/1748
提供使用Swashbuckle集成此更改:
由于NuGet不再管理此软件包,因此您可以定期检查Swashbuckle项目并在需要更新时重复此过程。