基于CORS 为Jfainl实现跨域请求

(该方式存在session会在每次请求都建立的状况。由于最近在休假,故解决方案稍后在方步) java

如下提供Ext、SenchaTouch解决方案: web

在Ajax请求中添加 json

withCredentials : true,
	useDefaultXhrHeader : false,

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


请求资源跨域是目前广泛存在的问题,实现的方式也有不少:如JSONP 或CORS.... session

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

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

之前使用struts2的时候 ,对jsonp的请求仍是比较方便的。只须要配置一个param就能够了。 框架

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

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

下面是具体的与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的拦截以前。
最后。你可使用原来的请求方式进行请求。 是否是很简单呢?
相关文章
相关标签/搜索