您的位置:首页 > Web前端 > JavaScript

关于js跨域问题解决

2015-01-22 08:54 204 查看
一般解决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'];

现在就可以跟后台交互了 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angularjs js webapp 跨域