Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法
當(dāng)使用jQuery Ajax post請(qǐng)求時(shí)可能會(huì)遇到類似這樣的錯(cuò)誤提示
XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx is not allowed by Access-Control-Allow-Origin.
這是Ajax跨域訪問權(quán)限的問題,服務(wù)器端不接受來自另一個(gè)不同IP地址的由腳本文件發(fā)出的http請(qǐng)求。解決這個(gè)問題需要在服務(wù)器端進(jìn)行配置使服務(wù)器端可以接受來自不同域的腳本文件的http請(qǐng)求。一個(gè)簡(jiǎn)單的解決方法是在服務(wù)器端配置Jetty Cross Origin Filter。
?
首先你需要下載jetty-servlets.jar。下載地址http://central.maven.org/maven2/org/eclipse/jetty/jetty-servlets/?。然后將jetty-servlets.jar導(dǎo)入到WEB-INF/lib文件夾。最后在web.xml文件配置一些簡(jiǎn)單的參數(shù)就可以使服務(wù)器端允許跨域訪問。一個(gè)典型的配置是這樣的:
1 <web-app> 2 3 <filter> 4 5 <filter-name>cross-origin</filter-name> 6 7 <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> 8 9 <init-param> 10 11 <param-name>allowedOrigins</param-name> 12 13 <param-value>*</param-value> 14 15 </init-param> 16 17 <init-param> 18 19 <param-name>allowedMethods</param-name> 20 21 <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value> 22 23 </init-param> 24 25 <init-param> 26 27 <param-name>allowCredentials</param-name> 28 29 <param-value>true</param-value> 30 31 </init-param> 32 33 <init-param> 34 35 <param-name>allowCredentials</param-name> 36 37 <param-value>true</param-value> 38 39 </init-param> 40 41 </filter> 42 43 <filter-mapping> 44 45 <filter-name>cross-origin</filter-name> 46 47 <url-pattern>/rest/*</url-pattern> 48 49 </filter-mapping> 50 51 </web-app>Jetty Cross Origin配置方法
接下來解釋參數(shù)的具體意義:
allowedOrigins: 允許跨域訪問的域名或鏈接地址,多個(gè)地址用逗號(hào)分隔,默認(rèn)值為"*", 表示接受來自所有域的訪問請(qǐng)求。
allowedMethods: 可接受的http請(qǐng)求方法,多個(gè)方法用逗號(hào)分隔,默認(rèn)為GET, PSOT, HEAD.
allowCredentials: 是否允許受信任的請(qǐng)求訪問資源,默認(rèn)為true。
?
有關(guān)其他詳細(xì)配置可以參考官方文檔:
http://www.eclipse.org/jetty/documentation/current/cross-origin-filter.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/llblog/p/4540957.html
總結(jié)
以上是生活随笔為你收集整理的Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梁祝是谁画的呢?
- 下一篇: [ActionScript 3.0] A