wildFly 配置跨域請求 不用改動前後臺代碼的方式

     由於在公司, 使用的服務是wildfly ,  並且後臺代碼是最傳統的java web項目,沒有什麼spring 的 熱門框架, 前端使用的就是jsp ,也沒有實現全後端分離,我個人是很難受的,很多坑,代碼不規範等問題 一堆, 不說這些了 ,都是題外話。

      這裏接手了一個項目,需要用到vue和公司的老後臺項目, 這就出現了前後端分離,然後很正常的跨域了,既然前端用的是Vue寫的項目就肯定用的是axios來請求後臺了,細節就不說了,由於是和同事一起開發,我只負責前端, 但是呢!~問題來了,同事並不知道如何在後臺添加跨域訪問攔截,那我肯定是不想去碰那些老代碼, 一碰就碎的那種感覺你們懂麼? 我就百度,開始使用axios的webpack配置來嘗試解決,但是無果。最後去看了一下wildfly這個服務的配置文件,看一下沒有解決途徑,功夫不負有心人,找到了方法, 貼一下:

    wildfly8版本:

1. 找到對應的 subsystem 節點

<subsystem xmlns="urn:jboss:domain:undertow:1.2">
           .....
</subsystem>

不同版本的 Wildfly 此節點屬性 xmlns="urn:jboss:domain:undertow:1.2" 的版本號可能有所不同。

2. 找到 subsystem 的子節點 host

 <subsystem xmlns="urn:jboss:domain:undertow:1.2">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" max-post-size="2048576000"/>
                <host name="default-host" alias="localhost">
                   ...
                </host>
            </server>
           
        </subsystem>

 

3. 在 host 節點下添加 filter-ref

 <subsystem xmlns="urn:jboss:domain:undertow:1.2">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" max-post-size="2048576000"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="allow-origin-header"/>
                    <filter-ref name="allow-headers-header"/>
                </host>
            </server>
           
        </subsystem>

 

<filter-ref name="allow-origin-header"/><!-- 跨域 -->

<filter-ref name="allow-headers-header"/><!-- 跨域 -->

4. 在 filters 節點中添加對應的節點

 <subsystem xmlns="urn:jboss:domain:undertow:1.2">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" max-post-size="2048576000"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="allow-origin-header"/>
                    <filter-ref name="allow-headers-header"/>
                </host>
            </server>
            <servlet-container name="default" default-encoding="UTF-8" default-session-timeout="600">
                <jsp-config development="true" check-interval="3"/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/"/>
            </handlers>
            <filters>
                <response-header name="allow-origin-header" header-name="Access-Control-Allow-Origin" header-value="*"/>
                <response-header name="allow-headers-header" header-name="Access-Control-Allow-Headers" header-value="*"/>
            </filters>
        </subsystem>

 

<filters>

<response-header name="allow-origin-header" header-name="Access-Control-Allow-Origin" header-value="*"/><!-- 跨域 -->

<response-header name="allow-headers-header" header-name="Access-Control-Allow-Headers" header-value="*"/><!-- 跨域 -->

</filters>

filters 子節點中的 name 屬性必須與 host 字節點中的 name 屬性值一一對應。

這裏還有一點需要注意的是, 有可能配置文件中沒有  <filters></filters>這個節點。自己加一個在該<subsystem>節點裏就是了

5. subsystem 節點詳細配置


 

 

<subsystem xmlns="urn:jboss:domain:undertow:8.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other">
	<buffer-cache name="default" />
	<server name="default-server">
		<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" />
		<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true" />
		<host name="default-host" alias="localhost">
			<location name="/" handler="welcome-content" />
			<http-invoker security-realm="ApplicationRealm" />
			<access-log pattern="combined" directory="${jboss.home.dir}/standalone/log" prefix="access." />
			<filter-ref name="x-powered-by-header" />
			<filter-ref name="allow-origin-header" />
			<!-- 跨域 -->
			<filter-ref name="allow-headers-header" />
			<!-- 跨域 -->
			<filter-ref name="server-header" />
			<filter-ref name="not-found" />
			<filter-ref name="static" />
		</host>
	</server>
	<servlet-container name="default" default-encoding="UTF-8">
		<jsp-config development="true" x-powered-by="false" />
		<websockets />
	</servlet-container>
	<handlers>
		<file name="welcome-content" path="${jboss.home.dir}/welcome-content" />
	</handlers>
	<filters>
		<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="zixizixi.com" />
		<response-header name="allow-origin-header" header-name="Access-Control-Allow-Origin" header-value="*" />
		<!-- 跨域 -->
		<response-header name="allow-headers-header" header-name="Access-Control-Allow-Headers" header-value="*" />
		<!-- 跨域 -->
		<response-header name="server-header" header-name="Server" header-value="zixizixi.com" />
		<error-page name="not-found" code="404" path="${jboss.home.dir}\welcome-content\404.html" />
		<gzip name="static" />
	</filters>
</subsystem>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章