Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html AngularJS“;否';访问控制允许原点';请求的资源上存在标头。”;CORS发行_Html_Json_Angularjs_Spring_Cors - Fatal编程技术网

Html AngularJS“;否';访问控制允许原点';请求的资源上存在标头。”;CORS发行

Html AngularJS“;否';访问控制允许原点';请求的资源上存在标头。”;CORS发行,html,json,angularjs,spring,cors,Html,Json,Angularjs,Spring,Cors,我试图使用AngularJS在HTML页面上访问Spring应用程序的JSON响应,并获得“请求的资源上没有“access Control Allow Origin”头。”错误。请求的URL为 HTML代码如下所示: var-app=angular.module('myApp',[]); app.config(['$httpProvider',函数($httpProvider){ $httpProvider.defaults.useXDomain=true; 删除$httpProvider.

我试图使用AngularJS在HTML页面上访问Spring应用程序的JSON响应,并获得“请求的资源上没有“access Control Allow Origin”头。”错误。请求的URL为

HTML代码如下所示:


var-app=angular.module('myApp',[]);
app.config(['$httpProvider',函数($httpProvider){
$httpProvider.defaults.useXDomain=true;
删除$httpProvider.defaults.headers.common['X-Requested-With'];
}
]); 
app.controller('Hello',函数($scope,$http){
$http.get('http://174.142.61.106:8080/BMAppJ/learningresources/getlist').
成功(功能(数据){
$scope.response=数据;警报(响应);
});
$scope.clickme=function(){
var res=jQuery(“#资源_类型”).val();
$http.get('http://174.142.61.106:8080/BMAppJ/learningresources/getlist/“+res)。
成功(功能(数据){
$scope.response=数据;
});
}
});
资源类型资源名称
{{x.resourceType}}
{{x.name}

我不熟悉Spring,但以下是我在PHP应用程序中设置的标题:

$headers->addHeaderLine('Access-Control-Allow-Methods', 'GET');
$headers->addHeaderLine('Access-Control-Allow-Credentials', 'true');
$headers->addHeaderLine('Access-Control-Allow-Origin', '*');
$headers->addHeaderLine('Access-Control-Allow-Headers', 'Content-Type, *');
也许这对你的情况也有帮助:)


关于

您可以通过实现javax.servlet.filter接口来创建过滤器类:

@Component
public class YourCORSFilter implements Filter {

    @Override
    public void init(FilterConfig arg0) throws ServletException {}

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletResponse response=(HttpServletResponse) resp;

        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, resp);
    }

    @Override
    public void destroy() {}

}
此筛选器现在不起任何作用。我必须将Spring应用程序配置为知道web.xml中的过滤器。只需将以下行放在web.xml文件的末尾

<filter>
    <filter-name>yourCORSFilter</filter-name>
    <filter-class>
        your.package.YourCORSFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>yourCORSFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

你的公司过滤器
你的.package.YourCORSFilter
你的公司过滤器
/*
现在,Spring将把YourCORSFilter中指定的头放到 但是你应该知道接受所有的客户端来源是 不实用,这是一个真正的安全问题。只允许受信任的 客户端来源消耗您的资源在将来会更合理 真实世界的应用程序


我已经讨论了这个问题,但我仍然面临这个问题。您应该看看谢谢,您对web.xml配置的解释很有帮助。