使用CORS實現跨域的方式
阿新 • • 發佈:2019-01-09
跨域是我們日常專案中經常遇到的問題,之前所使用的跨域解決方案是使用jsonp,但是如果某天需求變了,某功能需要改成支援POST,因為傳輸的資料量比較大,GET形式搞不定,這時就需要CORS出場了。。
CORS是一個w3c標準,全稱是跨域資源共享,它允許瀏覽器向跨源伺服器傳送XMLHttpRequest請求,從而克服了ajax只能同源使用的限制
CORS需要瀏覽器和伺服器同時支援,目前所有的瀏覽器都已經支援CORS,(IE瀏覽器不能低於ie10),所以我們只需要配置伺服器即可。這裡以配置tomcat為例。。
首先要在tomcat的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>
然後在tomcat的安裝路徑下的bin資料夾下新增兩個jar包:cors-filter-1.7.jar 和 java-property-utils-1.9.jar
如果找不到這兩個jar包的話,可以去http://download.csdn.net/detail/liuxins/9725785找或者直接私信給我。
之後便可以進行跨域請求了。。。
更多關於CORS具體的實現方式,請參考:點選開啟連結