当前位置: 首页 > 知识库问答 >
问题:

斯瓦格Spring访问-控制-允许-起源。

糜雪峰
2023-03-14

我有一个Spring Swagger应用程序,我可以在localhost上成功运行。但是当我在Heroku上运行相同的项目时,我得到以下错误:

XMLHttpRequest无法加载http://force-com-rest-swagger.herokuapp.com/api/doc/api/v1/account.Originhttps://force-com-rest-swagger.herokuapp.com不允许访问控制允许原点。

下面是我的招摇过市js配置:

<script type="text/javascript" th:inline="javascript">
    $(document).ready(function () {

        displaySwaggerDocuments();

        function displaySwaggerDocuments() {
            var url = '<c:url value="/api/resourceList"/>';
            window.swaggerUi = new SwaggerUi({
                discoveryUrl: url,
                dom_id: "swagger-ui-container",
                supportHeaderParams: false,
                supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
                apiKey: "",
                onComplete: function (swaggerApi, swaggerUi) {
                    if (console) {
                        console.log("Loaded SwaggerUI")
                        console.log(swaggerApi);
                        console.log(swaggerUi);
                    }
                    $('pre code').each(function (i, e) {
                        hljs.highlightBlock(e)
                    });
                },
                onFailure: function (data) {
                    if (console) {
                        console.log("Unable to Load SwaggerUI");
                        console.log(data);
                    }
                },
                docExpansion: "none"
            });

            window.swaggerUi.load();
        }
    });
</script>

有什么建议吗?

共有2个答案

闾丘鸣
2023-03-14

基本上,您需要在服务器中启用CORS——也许您的本地主机启用了CORS,但在Heroku中没有启用(我对Heroku一无所知)。

您需要服务器返回以下标题:

访问控制允许方法:POST,GET,OPTIONS,PUT

访问控制允许来源:*

通常,这是通过添加一个过滤器来完成的,该过滤器将此添加到所有招摇过市请求(源自招摇过市UI的请求)

您可以在 招摇过市资料中找到这方面的例子

最新消息:我在招摇过市消息来源中的确切位置链接已经失效;这里是指向他们当前存储库的链接。

祁承望
2023-03-14

解决方案是设置basPath:

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.knappsack.swagger4springweb.controller.ApiDocumentationController;

@Controller
@RequestMapping("/api")
public class ApiController extends ApiDocumentationController{

        public ApiController() {
        setBasePath("https://force-com-rest-swagger.herokuapp.com");
        setBaseControllerPackage("com.example.controller.api");
        setBaseModelPackage("com.example.model");
        setApiVersion("v1");
    }

        @RequestMapping(value = "/", method = RequestMethod.GET)
            public String documentation() {
                return "api";
        }
}
 类似资料:
  • 问题内容: 我尝试使用以下代码通过$ http(角度)发送http请求: 但这不起作用,并且我在Web控制台中有此错误: 你有解决方案吗 ? 问题答案: 您看到此错误是由于在浏览器中实现的称为Same Origin Policy的安全机制所致。 基本上,这是由于您的网页尝试访问驻留在与网页本身不同的主机,端口或方案(HTTP / HTTPS /文件等)所在的服务器上的资源而引起的。 为了解决此问题

  • 我正在创建一个脚本,加载在其他网站的外部。它加载CSS和HTML,在我自己的服务器上工作得很好。 但还是不管用。

  • 我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?

  • 问题内容: 我正在使用以下脚本- 我尝试访问的计算机正在运行播放框架。我收到以下错误: 选项404(未找到)jquery-1.9.1.min.js:5 XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我已经难过了两天,有人可以帮我吗? 提前谢谢 问题答案: 问题是您正在尝试进行跨域调用(从到)。Same Origin Policy 不允许这样做,因此浏览器试图使用跨域资源

  • 你有解决办法吗?

  • 此url位于AWS API网关中,方法为get,stage部署良好。我在aws文档之后启用了CORS。 -资源->操作->启用CORS->默认设置->启用CORS并替换CORS头。在CORS结果中没有错误日志。 我不是profesional web开发人员,我的浏览器是Safari。 以下是我查询“http://my.com”的代码 控制台打印错误:XMLHttpRequest不能加载“http: