gpt4 book ai didi

java - JBoss AS 7.1.1 中的跨域 POST

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:25 28 4
gpt4 key购买 nike

我在云服务器中有一个 Web 应用程序。我的 Web 应用程序的 Controller 之一将 URL 外部化,以便通过移动应用程序访问(使用 JavaScript;我使用 Titanium 为 Android 和 iOS 进行开发)。我可以毫无问题地访问 GET 方法,并且获得我想要的内容,但是当我调用 POST 方法发送要处理的信息时,我收到 Bad Server - HTTP Error。为了保护我的 URL,我使用在我的应用程序和 JBoss(standalone.xml 文件)中配置的 BASIC 身份验证。当我从 Web 应用程序内的表单(使用 JQuery Ajax)访问 POST 方法时,没问题,所以我认为这是一个跨域问题。

是否需要在 JBoss 中进行任何配置,以便我的 Web 应用程序可以接收来自任何其他域的 POST 调用(当然,需要提供正确的用户名/密码对)。

提前致谢!

最佳答案

通常这些跨域问题与浏览器有关,而不是服务器。浏览器将限制您对您所在页面的域使用 AJAX 更新的能力。有一些解决方法,例如 JSONP,但我不知道这是否适用于 POST。

我们决定使用第三方代理库 HTTP Proxy Servlet 。该代理 servlet 允许您通过添加简单的 web.xml 来 POST,就好像到本地可访问的域一样。这样做,我们也不必搞乱 JSONP,直接使用 JSON 就可以了。

我们使用它来将多个不同的路径转发到多个不同的服务器(您可以在同一个 Web 应用程序中使用此方法拥有多个转发器)。我们的 web.xml 只是一系列 servlet 映射(每个外部 RESTful 服务都有一个指向基本路径):

   <servlet>
<servlet-name>MyOneProxy</servlet-name>
<servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
<init-param>
<param-name>targetUri</param-name>
<param-value>http://external-web-app.com/basePath</param-value>
</init-param>
<init-param>
<param-name>log</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyOneProxy</servlet-name>
<url-pattern>/internalBasePath/*</url-pattern>
</servlet-mapping>

关于java - JBoss AS 7.1.1 中的跨域 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16642028/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com