Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法
當使用jQuery Ajax post請求時可能會遇到類似這樣的錯誤提示
XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx is not allowed by Access-Control-Allow-Origin.
這是Ajax跨域訪問權限的問題,服務器端不接受來自另一個不同IP地址的由腳本文件發出的http請求。解決這個問題需要在服務器端進行配置使服務器端可以接受來自不同域的腳本文件的http請求。一個簡單的解決方法是在服務器端配置Jetty Cross Origin Filter。
?
首先你需要下載jetty-servlets.jar。下載地址http://central.maven.org/maven2/org/eclipse/jetty/jetty-servlets/?。然后將jetty-servlets.jar導入到WEB-INF/lib文件夾。最后在web.xml文件配置一些簡單的參數就可以使服務器端允許跨域訪問。一個典型的配置是這樣的:
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配置方法
接下來解釋參數的具體意義:
allowedOrigins: 允許跨域訪問的域名或鏈接地址,多個地址用逗號分隔,默認值為"*", 表示接受來自所有域的訪問請求。
allowedMethods: 可接受的http請求方法,多個方法用逗號分隔,默認為GET, PSOT, HEAD.
allowCredentials: 是否允許受信任的請求訪問資源,默認為true。
?
有關其他詳細配置可以參考官方文檔:
http://www.eclipse.org/jetty/documentation/current/cross-origin-filter.html
?
轉載于:https://www.cnblogs.com/llblog/p/4540957.html
總結
以上是生活随笔為你收集整理的Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梁祝是谁画的呢?
- 下一篇: [ActionScript 3.0] A