无访问权限-允许来源-跨域

问题描述 投票:0回答:1

我想访问从AJAX查询的服务,但是当我调用此服务时,它在控制台浏览器中指示我以下内容:

XMLHttpRequest cannot load http://192.168.108.166:8080/LdapRESTEasy/rest/RESTEasyLdap/login. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

我正在使用Apache Tomcat 6并创建一个服务,我的RESTeasy在登录时会返回带有用户数据的JSON。

包含AJAX的我的javascript代码如下:

function login(){

        var hashNoEnconding = document.getElementById("user").value +'|'+ document.getElementById("pass").value;

        var hashEnconding = base64Encode(hashNoEnconding);

        var url = "http://192.168.108.166:8080/LdapRESTEasy/rest/RESTEasyLdap/login";

        $.ajax({
            url:url,
            type:'POST',
            encoding:"UTF-8",
            headers: {
                "Content-Type":"application/json; charset=UTF-8"
            },
            contentType: "application/json; charset=UTF-8",
            accept: "application/json; charset=UTF-8",
            cacheControl: "no-cache",
            beforeSend: function (request){
                request.setRequestHeader("authorization", hashEnconding);
            },
            success:function (data, status, xhr) {

            },
            error: function (data) {



            }
        });
    }

从Apache Tomcat服务器配置建议添加CORS过滤器的web.xml

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Content-Type, X-Requested-With, Accept, Authentication, Authorization</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>false</param-value>
    </init-param>
</filter>

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

我还在/ lib中添加了apache库:

cors-filter-1.9.2.jar

java-property-utils-1.9.jar

我已经在互联网上阅读了有关此问题的信息,但仍无法解决

请,我可以帮我吗?谢谢!!

我想访问从AJAX查询的服务,但是当我调用此服务时,在控制台浏览器中指示我以下内容:XMLHttpRequest无法加载http://192.168.108.166:8080 / ...

ajax tomcat cross-domain
1个回答
0
投票

是,我找到了解决方案。问题出在错误500 Internal Server中,该错误向我指示请求发送的参数未到达服务。出现为NULL。我修改了服务以接收GET,并且它起作用了!

© www.soinside.com 2019 - 2024. All rights reserved.