复制实例后 CORS 不工作
CORS not working after I copied the instance
我有一个 运行 实例,其中包含 tomcat 7 和 java 应用程序。我想复制实例。在 Amazon 中,我单击 "create image",并从中启动了一个新实例。之后,我尝试使用新实例。当我发出简单的请求时它可以工作,但是当我从浏览器尝试时我得到 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>
您的 javascript/html/css 是否与您的旧实例在同一台服务器上?
当浏览器做一些API调用时,如果API地址与javascript路径不同server/domain,浏览器将检查CORS header API 以确保此服务器允许 cross-origin 请求。在旧实例中,一切都在同一个地方,所以不需要做。但在新实例中,您的应用需要 return CORS header 到客户端。
您可以在 Tomcat 中查看此问题以了解如何将 CORS header 添加到您的应用程序:
比较您使用的初始化参数名称
<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>
和 configuration reference Tomcat 7 的文档。您拼写错误。
cors.allowed.origins
的默认值已于 2018 年 5 月(Tomcat 7.0.89、8.5.32、9.0.9)更改为解决 CVE-2018-8014(bug 62343).
我只使用这些依赖项并使用所有方法,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>
在您的 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>
我有一个 运行 实例,其中包含 tomcat 7 和 java 应用程序。我想复制实例。在 Amazon 中,我单击 "create image",并从中启动了一个新实例。之后,我尝试使用新实例。当我发出简单的请求时它可以工作,但是当我从浏览器尝试时我得到 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>
您的 javascript/html/css 是否与您的旧实例在同一台服务器上?
当浏览器做一些API调用时,如果API地址与javascript路径不同server/domain,浏览器将检查CORS header API 以确保此服务器允许 cross-origin 请求。在旧实例中,一切都在同一个地方,所以不需要做。但在新实例中,您的应用需要 return CORS header 到客户端。
您可以在 Tomcat 中查看此问题以了解如何将 CORS header 添加到您的应用程序:
比较您使用的初始化参数名称
<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>
和 configuration reference Tomcat 7 的文档。您拼写错误。
cors.allowed.origins
的默认值已于 2018 年 5 月(Tomcat 7.0.89、8.5.32、9.0.9)更改为解决 CVE-2018-8014(bug 62343).
我只使用这些依赖项并使用所有方法,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>
在您的 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>