Java 复制实例后CORS不工作

Java 复制实例后CORS不工作,java,tomcat,cors,tomcat7,Java,Tomcat,Cors,Tomcat7,我有一个运行Tomcat7和java应用程序的实例。我想复制一个实例。在Amazon上,我单击“创建图像”,并从中启动了一个新实例。之后,我尝试使用新实例。当我发出简单的请求时,它会工作,但当我尝试从浏览器中执行时,会出现CORS错误: Access to XMLHttpRequest at 'https://xxxxxx/getConfiguration' from origin 'http://xxxxxx:9000' has been blocked by CORS policy: No

我有一个运行Tomcat7和java应用程序的实例。我想复制一个实例。在Amazon上,我单击“创建图像”,并从中启动了一个新实例。之后,我尝试使用新实例。当我发出简单的请求时,它会工作,但当我尝试从浏览器中执行时,会出现CORS错误:

Access to XMLHttpRequest at 'https://xxxxxx/getConfiguration' from origin 'http://xxxxxx:9000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的服务器或前端配置没有任何更改。当我使用旧服务器时,它工作正常。cors过滤器是相同的:

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>

    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified, Access-Control-Request-Method,Access-Control-Request-Headers,authorization</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
    </init-param>
</filter>


<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

科尔斯
org.apache.catalina.filters.CorsFilter
金鸡儿
*
cors.supportsCredentials
假的
cors.allowed.headers
Accept、Origin、X-Requested-With、内容类型、上次修改、访问控制请求方法、访问控制请求标头、授权
cors.methods
获取、发布、标题、选项、放置、删除
科尔斯
/*

您的javascript/html/css是否与旧实例位于同一服务器中

当浏览器进行一些API调用时,如果API地址位于具有javascript路径的不同服务器/域中,则浏览器将检查API的CORS头,以确保该服务器允许跨源请求。在旧的例子中,所有的东西都在同一个地方,所以不需要这样做。但在新实例中,您的应用程序需要将CORS头返回到客户端

您可以看到这个问题,了解如何在Tomcat中将CORS头添加到应用程序中:


比较您使用的init参数名称

<init-param>
    <param-name>cors.allowOrigin</param-name>
    <param-value>*</param-value>
</init-param>
<init-param>
    <param-name>cors.supportsCredentials</param-name>
    <param-value>false</param-value>
</init-param>

金鸡儿
*
cors.supportsCredentials
假的
以及Tomcat7的文档。你把它们拼错了


2018年5月更改了
cors.allowed.origins
的默认值(针对Tomcat 7.0.89、8.5.32、9.0.9)以解决CVE-2018-8014()。

我只使用这些依赖项,并且正在使用所有方法、POST、GET等

    <dependency>
        <groupId>com.thetransactioncompany</groupId>
        <artifactId>java-property-utils</artifactId>
        <version>1.9.1</version>
    </dependency>

    <dependency>
        <groupId>com.thetransactioncompany</groupId>
        <artifactId>cors-filter</artifactId>
        <version>1.9.1</version>
    </dependency>

交易公司
java属性utils
1.9.1
交易公司
cors过滤器
1.9.1
在下面的web.xml中添加此配置

    <filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

科尔斯
com.thetransactioncompany.cors.CORSFilter
科尔斯
/*

请将
cors.exposed.headers访问控制允许来源,访问控制允许凭据添加到您的筛选器中,并告诉我它是否有效not@Spara不工作是tomcat的CorsFilter。这是cors流程图。也许阅读它们可以帮助你解决问题problem@Spara但这已经奏效了。当我复制一个实例时会发生什么变化?是的,我知道这是一种奇怪的事件!这个答案是准确的。出于某种原因,tomcat版本从7.0.89以下升级到7.0.89以上,因此参数名称确实发生了变化!