基於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的攔截以前。
最後。你可使用原來的請求方式進行請求。 是否是很簡單呢?
相關文章
相關標籤/搜索