wildFly 配置跨域請求 不用改动前后台代码的方式

2 篇文章 0 订阅
1 篇文章 0 订阅

     由于在公司, 使用的服务是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>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值