关于js跨域问题解决

来源:互联网 发布:instanceof php 编辑:程序博客网 时间:2024/05/20 06:39

一般解决js跨域问题大多使用jsonp和CROS解决,但由于jsonp采用get的方式,即使是用post,也会自动转为get,对传到服务器的字节数有一定限制,而且这种机制对安全性也存在一定隐患,因此我采用CROS解决,我由于最近做webapp的问题,前台采用angularjs +ionic,后台采用springmvc实现restful,在跨域解决方面,后台在web.xml里面引入filter,这个类采用jetty里面现成的类实现,只需要配置参数就可以了,代码如下:

 <filter>
         <filter-name>cross-origin</filter-name>
         <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
         <init-param>  
            <param-name>allowedMethods</param-name>  
            <param-value>GET,POST,OPTIONS,DELETE,PUT</param-value>  
        </init-param>
     </filter>
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  

在maven工程中映入对应的jar,重新打包后台就搞定了 

<dependency>    
<groupId>org.eclipse.jetty</groupId>    
<artifactId>jetty-servlets</artifactId>    
<version>9.0.0.RC2</version>    
</dependency> 

前台angularjs 需要在config里面增加两行代码

$httpProvider.defaults.useXDomain = true;

delete $httpProvider.defaults.headers.common['X-Requested-With'];


现在就可以跟后台交互了 


0 0