我有一个Java的web应用程序,我正在将一些请求从jQuery发送到配置有JAX-RS的Rest API,在我的本地机器上它运行得很好,但是在Heroku上部署它之后,它给了我一个错误
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at...
特别是,我正在从jQuery向这个endpoint发送一个POST请求。
我也为我的应用程序配置了CORS过滤器,这使得它可以在我的本地机器上工作(在这样做之前,应用程序在我的本地机器上给了我同样的错误)。总之,这里是我如何配置它的
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Headers",
"Location, origin, content-type, accept, authorization, enctype, content-disposition");
responseContext.getHeaders().add("Access-Control-Expose-Headers", "Location");
responseContext.getHeaders().add("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD");
}
}
我还尝试将这些头添加到响应对象中,作为对请求的响应,但没有成功。
我相信一定是什么Heroku的东西,但我不确定。
任何帮助都是有价值的。
使用普通筛选器:
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class CORSFilter implements Filter {
private static final String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin";
private static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods";
private static final String ACCESS_CONTROL_ALLOW_HEADERS = "Access-Control-Allow-Headers";
private static final String ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers";
private static final String ALL = "*";
private static final String ALLOWED_METHODS = "GET";
private static final String ALLOWED_HEADERS =
"origin, content-type, accept, Authorization, x-requested-with";
private static final String EXPOSE_HEADERS = "TEST";
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse sresponse = (HttpServletResponse) response;
sresponse.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, ALL);
sresponse.setHeader(ACCESS_CONTROL_ALLOW_METHODS, ALLOWED_METHODS);
sresponse.setHeader(ACCESS_CONTROL_ALLOW_HEADERS, ALLOWED_HEADERS);
sresponse.setHeader(ACCESS_CONTROL_EXPOSE_HEADERS, EXPOSE_HEADERS);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
问题内容: 我在Heroku上有一个Node.js应用程序。我最近切换了一个较长的查询以使用SSE(EventSource)。尽管它在我的机器上运行良好且速度很快,但我不断收到GET请求。H15说明说我每次交易都超过了55秒。但是我的整个查询时间不会超过4-5秒。 此外,在阅读了说明之后,我将在查询开始后立即返回我的第一个字节(只是一个数字),然后再开始进行繁重的工作-仍然不起作用。 我的问题是:
问题内容: 我有这个wordpress网站,带有一个名为JSON API的插件。此插件为wordpress中的内容提供JSON格式。我可以通过添加header(“ Access-Control-Allow-Origin:*”)来在wordpress上启用CORS。在php标头上。但是,当我尝试使用JSON API插件提供的CORS的网址时,它不再起作用。 这是我正在测试的wordpress网站…我
问题内容: 我已经在node.js的快速框架上编写了REST API,该API可以处理来自Chrome中的js控制台的请求以及URL栏等。现在,我正尝试使其针对来自另一个应用程序的请求工作,域(CORS)。 由javascript前端自动发出的第一个请求是对/ api / search?uri =的,并且似乎在“预检” OPTIONS请求上失败。 在我的快速应用中,我使用以下命令添加了CORS标头
问题内容: 如何在Django REST框架上启用CORS?该参考没有太大帮助,它说我可以通过中间件来完成,但是我该怎么做呢? 问题答案: 你在问题中引用的链接建议使用,其文档指出要安装该库 然后将其添加到已安装的应用程序中: 你还需要添加一个中间件类来侦听响应: 你可能还需要浏览其文档的配置部分,特别注意各种设置。
问题内容: 我已经在Heroku上添加了nano附加组件,并且已经在控制台中成功对其进行了测试。但是,当我的应用尝试与Redis连接时,出现以下错误: Heroku日志文件: 为什么要尝试在本地主机上访问Redis? 我的config / initializers文件夹中的Redis.rb具有此功能,几乎可以肯定是问题所在。 问题答案: 您在使用Resque吗?如果是这样,您需要告诉Resque使
我正在编写一个web应用程序,其中客户端将(JSON)表单数据发布到,服务器也应该使用JSON进行响应。服务器端使用java servlet编写,运行在Tomcat上,客户端使用Angular 7编写。不幸的是,即使在通过HTTP头启用CORS之后,我仍然面临CORS错误。我有什么遗漏吗? 这就是我在客户端遇到的错误:在'http://localhost:8080/mysocial/signIn“