当前位置: 首页 > 面试题库 >

如何在RESTEasy中启用JSONP?

相化
2023-03-14
问题内容

标题说说我的问题。我需要将DTO包装到javascript方法回调中。目前,我应要求返回JSON。但是在Ajax中使用此问题,因为我将GET发送到其他域。当然还有治安警察。

我有创建附加提供的想法。有任何html" target="_blank">示例,链接或建议如何执行。


问题答案:

RESTEasy中没有明确支持JSONP,但是在应用程序中启用JSONP的一种简单方法是编写Servlet过滤器。

这里有一些链接可以帮助您编写过滤器:

  • jsonp-java:服务器端过滤器将所有响应包装到jsonp回调中

  • 从JAX-RS Web服务提供JSONP服务

  • 使用Spring的DelegatingFilterProxy为JSONP回调实现Servlet过滤器(如果您使用的是Spring)

当我有这个要求时,我最终写了我自己的东西,因为我发现的所有示例似乎都无法完全满足。这是我编写自己的过滤器的建议:

  • 仅在指定了回调参数的情况下包装响应(显然)

  • 仅在响应内容类型为时包装响应application/json(或者,如果您想支持更多的变体选择,则仅在响应内容类型为application/json或时包装application/*+json

  • 使用HttpServletResponseWrapper,这样您就可以调用前向链(chain.doFilter),而无需将任何数据写入实际响应中。转发链完成后,您可以检查内容类型,确保将响应包装为JSONP,然后将捕获的数据以及JSONP前缀和后缀写入 实际 响应中。

  • 当您决定将响应包装为JSONP时,请确保将响应内容类型更改为 text/javascript

如果您以前对Java EE过滤器还没有做很多事情,那么您可能想先阅读Java
EE教程的相关部分:过滤请求和响应。



 类似资料:
  • 嗨,我正在使用resteasy api,我需要使用Map作为QueryParam。我可以使用list作为QueryParam,但是当我尝试传递Map时,我得到了下面提到的错误。 这是我的服务代码

  • 问题内容: 尝试执行以下行时,仅显示最后两个语句(“ Here is some ERROR”和“ Here is some FATAL”),并且不显示前三个语句。我刚刚开始学习此主题,任何人都可以告诉为什么会这样呢? log4j.property有 问题答案: 您可能在项目中的某个地方有一个log4j.properties文件。在该文件中,您可以配置所需的调试输出级别。请参阅以下示例: 第一行将根

  • 问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

  • 问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku

  • 问题内容: 当我在MySQL中执行查询时,它返回一条错误消息,说明未启用InnoDB。当我单击存储引擎时,InnoDB被禁用。 如何启用InnoDB? 问题答案: 您需要在文件中启用它,然后重新启动服务器: http://dev.mysql.com/doc/refman/5.1/zh-CN/innodb- parameters.html#option_mysqld_innodb 或者,您可以在运行

  • 问题内容: 如何在xampp中启用curl? 我的PHP Twitter应用程序需要curl函数。但是未在XAMPP中启用它。如何启用它。我没有选择这样做的选择。 问题答案: 您必须修改xampp文件夹中的php.ini文件。需要更改三个不同位置的三个文件。 请按照以下步骤在Windows中使用XAMPP启用curl库: 步骤1: 浏览并打开以下3个文件 第2步: 通过删除分号(;)取消注释php