0

我正在客户端使用 Extjs-6.0.0 开发一个应用程序。我在端口 80运行客户端应用程序。我的服务器端应用程序在端口 8084中运行。当我使用 提交表单时form.submit,会发生以下错误。

XMLHttpRequest 无法加载 localhost:8084/GeoAd/ad/add。跨源请求 > 仅支持协议方案:http、data、chrome、chrome-extension、> https、chrome-extension-resource。

铬扩展,https,铬扩展资源。未捕获的 NetworkError:无法在“XMLHttpRequest”上执行“发送”:无法加载“localhost:8084/GeoAd/ad/add”。

在此处输入图像描述

我该如何解决这个问题
注意:我的服务器端语言是 java web 应用程序。

4

3 回答 3

0

如果您尝试通过在 Chrome 快捷方式属性的目标末尾使用以下配置从 Chrome 浏览器中访问代码,则可以避免 CORS 错误:

--disable-web-security --user-data-dir

还要检查 禁用 Chrome 中的同源策略

于 2017-04-19T18:27:23.900 回答
0

您需要跨域 (CORS) XHR 请求以使用 POST 方法在不同端口上调用服务器(普通 XHR 使用相同的协议/域/端口)。使用 ExtJS4,您可以简单地将以下属性添加到您的 ajax 请求中:

...
useDefaultXhrHeader: false,
cors: true,
...

我认为它也将适用于 6。

无论如何,要在不同的端口使用 POST 调用您的 java WS,您需要将其配置为管理 CORS。基本上,您需要在响应中添加一些标题,但您会根据您使用的堆栈找到好的文档。

于 2015-08-14T07:36:40.523 回答
0

通过向响应添加一些标头来向您的 spring 项目添加一个过滤器以允许跨域:

import java.io.IOException;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * see https://spring.io/guides/gs/rest-service-cors/
 *
 * @author dariushvb2010
*/
public class SimpleCorsFilter implements Filter {

  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest hreq = (HttpServletRequest) req;
    String origin = hreq.getHeader("Origin");
    if (origin != null) {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    }
    chain.doFilter(req, res);
  }

  public void init(FilterConfig filterConfig) {
  }

  public void destroy() {
  }

}

所以将这些行添加到web.xml

<filter>
    <filter-name>corsFilter</filter-name>
    <filter-class>ir.javan.geoad.util.SimpleCorsFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>corsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
于 2015-08-17T01:50:35.440 回答