小编Mat*_* P.的帖子

Office加载项开发 - 格式错误的GET URL(_host_Info = ...)

我目前正在使用Microsoft提供的JavaScript界面​​开发MS Word Office Addin.我使用Django后端进行了测试实现,其中一切正常.

但是对于最终产品,我必须将功能集成到以多种配置运行的现有Java后端,这些配置是我无法控制的.由用户界面的Vaadin组成,主要是Tomcat(但并不总是)作为Servlet容器.

我遇到了一个问题,即在Word中运行的IFrame会将不需要的和格式错误的_host_info附加到请求URL,其中包含un-urlencoded管道符.例如:Tomcat Log:

"GET /myapp/?_host_Info=Word|Win32|16.01|en-US HTTP/1.1" 200 2101
Run Code Online (Sandbox Code Playgroud)

此格式错误的URL会产生以下异常:

java.lang.RuntimeException: Invalid location URI received from client.
... full stack trace at bottom of the post...
Caused by: java.net.URISyntaxException: Illegal character in query at index          45: https://localhost:8443/myapp/?_host_Info=Word|Win32|16.01|en-US
Run Code Online (Sandbox Code Playgroud)

据我所知,我无法控制是否将此参数附加到URL,因为在Addin的Manifest文件中我只指定了如下所示的源URL,并且信息会自动添加.

<SourceLocation DefaultValue="https://localhost:8443/myapp/ " />
Run Code Online (Sandbox Code Playgroud)

检查文档我没有在那里找到这种行为,所以我可能会遗漏一些东西.博客文章中提到了查询主机信息,但它似乎不应该是URL的一部分.

  • 有没有办法可以阻止Office加载项附加: ?_ host_Info = Word | Win32 | 16.01 | en-US HTTP/1.1到请求?

  • 如果没有,是否有正确的方法来使用Tomcat过滤/忽略该部分URL?由于整个应用程序已经使用我的Apache Webserver和Django Backend正确运行,其中也收到了URL,但它有效.

至于问题二,我已经尝试实现一个应该删除相关参数的Servlet过滤器.但由于它依赖于相同的Java库来解析URL以查看它,因此抛出了相同的异常.

> May 23, 2016 11:04:51 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [MyUIServlet] …
Run Code Online (Sandbox Code Playgroud)

java tomcat ms-office office-js

6
推荐指数
1
解决办法
737
查看次数

标签 统计

java ×1

ms-office ×1

office-js ×1

tomcat ×1