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

Angular-JS cors请求无法到达服务器

雷硕
2023-03-14

我有一个正确配置CORS的spring MVC API后端,当我尝试进行ajax调用时,我在chrome中遇到以下错误

XMLHttpRequest无法加载172.20.16.45:8082/Cuponza.请求被重定向到“172.20.16.45:8082/Cuponza/”,这对于需要预飞行的跨原点请求是不允许的。

    $scope.sendRegistrationForm = function(){
        var config = {headers:  {
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods' : 'GET,OPTIONS',
        'Access-Control-Allow-Headers' : 'X-Requested-With, Content-Type',
        'Content-Type' : 'text/plain',
        'Accept-Language' : 'en-US'
    }
};
        $http.get("172.20.16.45:8082/cuponza",config).
    success(function(data){
            alert(data);
        }).
        error(function(data,status){
            alert(status);
        })
        }

我试着用标志-disable-web-security启动chrome,通过这样做,我能够看到我的服务器端的CorsFilter正常工作,我也从服务器得到了正确的响应,这就是为什么我肯定我的错误是在客户端。当正常启动chrome时,服务器上的过滤器甚至从未启动。

更新:当我删除带有cors头的config对象时,我会得到以下错误

    XMLHttpRequest cannot load 172.20.16.45:8082/cuponza

. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '
    localhost:8100' is therefore not allowed access

更新II im显示chrome显示的请求:正常启动chrome:

共有1个答案

杨晓博
2023-03-14

solutions是两个fold,在前端中必须添加一个空的配置对象,如下所示

var config={};然后将其添加到angular调用$http.post(url.config)中;这样做的原因是,在没有空配置对象的情况下,angular将方法类型设置为POST并检查筛选器,以查看内容类型是否为text/plain,而它不是,因为它在默认情况下没有设置,如果发送空参数,angular将方法设置为option,并将不同的逻辑应用于筛选器。

在web.xml中,必须在过滤器设置中添加以下头:access-control-allow-origin到允许的头,如下所示

<init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,access-control-allow-origin</param-value>
    </init-param>

有了这个,你的tomcat就准备好了

 类似资料:
  • 问题内容: 我在跟踪为什么无法连接到特定主机时遇到问题。 通过curl或浏览器,以下命令可以正常工作: 但是,如果我使用请求: 我得到: 在网络上,我仅看到客户端问好,服务器立即断开连接,因此似乎没有任何ssl或密码不兼容。(我希望这些都是SSL层错误)在这种情况下还有什么其他问题? 我在python 3.6.1上,请求2.14.2(带有安全性额外功能)。 问题答案: 该服务器以多种方式损坏。 一

  • XMLHttpRequest无法加载http://localhost:6010/gettweets。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源'http://localhost:4200'。error_handler.js:54异常:URL:null的状态为0的响应

  • 我正在尝试将hibernate orm映射工具配置到我的java类,并使用PostgreSQL作为我的数据库,并将密码配置为“password”。当我尝试运行该应用程序时,我在控制台日志中遇到错误:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]。我已经在老版本的hibernate上尝试过这个方法,它很管用。我现在使用的hib

  • 问题内容: 我有一个带有Jhipster版本5v的微服务,以及在无业游民的centos 7v中运行的ElasticSearch映像2.4.1。这两个映像正在运行,但是保存和搜索操作无法到达Elasticsearch映像。 码头工人组成: application_dev.yml: application_prod: 域: 问题答案: 问题是群集中的ES节点之一正在磁盘空间不足的情况下运行,因此您遇到

  • 我正在使用ksop2依赖***(编译'com.google.code.ksoap2-android: ksoap2-android: 3.6.0')***命中肥皂Web服务,但得到以下异常。 异常-SoapFault-故障代码:“soap:Server”faultstring:“服务器无法处理请求--- JAVA代码

  • 我有这个代码: 当为 true(执行 POST 或 PUT 请求)时,此代码会引发 IOException,并且不会完成请求。我尝试对 重新排序、编写调用和流创建块,但没有排列工作。 在所有情况下,BufferedReader都工作得很好,不会抛出任何异常。< code>getQuery正确返回URL编码的字符串。 以下是来自IOExc的堆栈跟踪: 最终发生的是请求通过,但没有一个POST或PUT