我收到以下错误:无法从服务器读取。当代码部署到服务器时,它可能没有适当的访问控制源设置。。 我做了很多研究 在web.config中添加了以下代码
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
</customHeaders>
</httpProtocol>
或在启动项目中
public static void Configuration(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
}
或int webapi.config - &gt;注册
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
可以提供一些帮助吗?有没有人有同样的问题
答案 0 :(得分:1)
这是一个古老的问题,但我遇到了同样的问题,没有找到永久性的解决方法,但偶然发现了解决方法。所以在这里分享。
Swagger URL为http://localhost/blah/swagger/ui/index#/
但是草率文档的URL是https://localhost/blah/swagger/docs/v1
将文档的URL从 https 更改为 http 可行。
如果有人知道即使两个URL都具有相同的协议(https),在以上问题的情况下为何也无法解决问题,
答案 1 :(得分:0)
当尝试使用插件alt3/cakephp-swagger来记录Cakephp api时,我遇到了相同的问题 在玩了一段时间后,我意识到这个奇怪的CORS错误的原因是由于生成了无效的json,因为没有文件具有生成swagger所需的有效json所需的逻辑。我通过在随机的php文件中添加一些swagger-php逻辑来找到解决方案。
答案 2 :(得分:0)
我只是面对这个问题,这是我的解决方案:
.EnableSwagger(c =>
{
// By default, the service root url is inferred from the request used to access the docs.
// However, there may be situations (e.g. proxy and load-balanced environments) where this does not
// resolve correctly. You can workaround this by providing your own code to determine the root URL.
//
c.RootUrl(req =>
{
var url = req.RequestUri.Scheme ;
#if !DEBUG
url += "s";
#endif
url += "://" + req.RequestUri.Authority + System.Web.VirtualPathUtility.ToAbsolute("~");
return url;
});
});
我允许在调试模式下不使用 https 方案,并在您在服务器上发布应用程序时使用它。这为我解决了问题。