您的位置:首页 > 大数据 > 人工智能

基于CORS 为Jfainl实现跨域请求

2013-09-29 11:52 197 查看
(该方式存在session会在每次请求都创建的情况。因为最近在休假,故解决方案稍后在方步)

以下提供Ext、SenchaTouch解决方案:

在Ajax请求中添加

withCredentials : true,
useDefaultXhrHeader : false,

上述两个配置即可以完成session为空的bug。其他框架如Jquery应该大同小异。

请求资源跨域是目前普遍存在的问题,实现的方式也有很多:如JSONP 或CORS....

在WebApp日益风靡的时代,跨域已经不可避免。

以前在做跨域的时候采用JSONP的方式,但是该实现有弊端,如只提供get方式请求,get请求会导致什么问题 详情百度。

以前使用struts2的时候 ,对jsonp的请求还是比较方便的。只需要配置一个param就可以了。

但是学习了JFinal之后,已经深深的爱上它了。但是尝试跨域的时候 ,采用jsonp的方式总感觉别扭。

于是我找到了 CORS(请不要百度。百度出来的结果都是关于gps的)

下面是具体的与jfinal整合实现。

1.第一步:下载两个jar包。分别是:cors-filter-1.7.1.jar和java-property-utils-1.9.jar

2.第二步:修改项目的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>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</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>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

注意:cors的拦截需要在jfinal的拦截之前。

最后。你可以使用原来的请求方式进行请求。 是不是很简单呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: