tomcat7.0配置CORS(跨域资源共享)
平時我們做前臺頁面時可能會遇到瀏覽器以下提示(瀏覽器控制臺):
????已阻止跨源請求:同源策略禁止讀取位于 http://xxx.xxx.com 的遠程資源。(原因:CORS 頭缺少 'Access-Control-Allow-Origin')
這種情況就是跨域請求被阻止,這樣可能會導致當前網站的css、js 、ajax請求、font字體等資源出現無法正常訪問的問題,這時就涉及到“跨域資源共享”這個問題了。
以下列舉跨域問題的幾種情形:
| URL | 說明 | 是否允許通信 |
| http://www.a.com/a.js | 同一域名下 | 允許 |
| http://www.a.com/lab/a.js | 同一域名下不同文件夾 | 允許 |
| http://www.a.com:8000/a.js | 同一域名,不同端口 | 不允許 |
| http://www.a.com/a.js | 同一域名,不同協議 | 不允許 |
| http://www.a.com/a.js | 域名和域名對應ip | 不允許 |
| http://www.a.com/a.js | 主域相同,子域不同 | 不允許 |
| http://www.a.com/a.js | 同一域名,不同二級域名(同上) | 不允許(cookie這種情況下也不允許訪問) |
| http://www.cnblogs.com/a.js | 不同域名 | 不允許 |
如果是PHP等語言,這個問題貌似很好解決,只要一行代碼就可以搞定,那么Java呢?如何在不修改代碼的情況下,實現跨域資源共享?請往下看:
CORS(跨域資源共享)介紹:
CORS(Cross-Origin Resource Sharing) 跨域資源共享
全稱:Cross-Origin Resource Sharing
中文意思:跨域資源共享
它 在維基百科上的定義是:跨域資源共享(CORS )是一種網絡瀏覽器的技術規范,它為Web服務器定義了一種方式,允許網頁從不同的域訪問其資源。而這種訪問是被同源策略所禁止的。CORS系統定義了一 種瀏覽器和服務器交互的方式來確定是否允許跨域請求。 它是一個妥協,有更大的靈活性,但比起簡單地允許所有這些的要求來說更加安全。
?
Tomcat下的項目的配置:
首先需要下載cors-filter-1.7.jar,java-property-utils-1.9.jar這兩個jar包;
然后配置工程項目中web.xml文件,配置信息如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ????<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> |
轉載于:https://www.cnblogs.com/kabi/p/6090202.html
總結
以上是生活随笔為你收集整理的tomcat7.0配置CORS(跨域资源共享)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于web技术的一些见解
- 下一篇: 由web项目中上传图片所引出的路径问题