CORS:AngularJS + Resteasy 3 + Wildfly

2023-11-25

我正在使用 AngularJS 和 Resteasy 开发一个应用程序。正如预期的那样,我面临着众所周知的问题

XMLHttpRequest cannot load http://localhost:8080/..... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 403.

正如在其他堆栈溢出帖子中看到的那样[1],我尝试使用来自Feature对象的Resteasy的CorsFilter,但我得到:

[33m02:06:57,883 WARN  [org.jboss.resteasy.core.ExceptionHandler] (default task-1) failed to execute: javax.ws.rs.ForbiddenException: Origin not allowed: http://localhost:3000
    at org.jboss.resteasy.plugins.interceptors.CorsFilter.checkOrigin(CorsFilter.java:194)
    at org.jboss.resteasy.plugins.interceptors.CorsFilter.filter(CorsFilter.java:134)

My Cors功能 object:

@Provider
public class CorsFeature implements Feature {

    @Override
    public boolean configure(FeatureContext context) {
        CorsFilter corsFilter = new CorsFilter();
        corsFilter.getAllowedOrigins().add("*");
        context.register(corsFilter);
        return true;
    }  
}

In web.xml我补充道:

<context-param>
    <param-name>resteasy.providers</param-name>
    <param-value>org.jboss.resteasy.plugins.interceptors.CorsFilter</param-value>
</context-param>

我发现当我评论这个 context-param 时,我没有得到前面提到的异常,并且响应状态是 200,而不是 403。

In the 角度模块配置我补充道:

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

我知道可以选择创建 Node.js 代理,但我想以困难的方式解决这个问题。 你能帮我克服人生中的这个大障碍吗?

谢谢 :)

稍后编辑:我设法通过注释要素类 (CorsFeature) si @Component 来实现这一点。这样应用程序上下文就可以知道它。


野蝇的解决方案

  1. edit standalone.xml:

config

<subsystem xmlns="urn:jboss:domain:undertow:3.0">
<buffer-cache name="default"/>
<server name="default-server">
    <http-listener name="default" socket-binding="http" redirect-socket="https"/>
    <host name="default-host" alias="localhost">
        <location name="/" handler="welcome-content"/>
        <filter-ref name="server-header"/>
        <filter-ref name="x-powered-by-header"/>
        <filter-ref name="Access-Control-Allow-Origin"/>
        <filter-ref name="Access-Control-Allow-Methods"/>
        <filter-ref name="Access-Control-Allow-Headers"/>
        <filter-ref name="Access-Control-Allow-Credentials"/>
        <filter-ref name="Access-Control-Max-Age"/>
    </host>
</server>
<servlet-container name="default">
    <jsp-config/>
    <websockets/>
</servlet-container>
<handlers>
    <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
    <response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
    <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    <response-header name="Access-Control-Allow-Origin" header-name="Access-Control-Allow-Origin" header-value="*"/>
    <response-header name="Access-Control-Allow-Methods" header-name="Access-Control-Allow-Methods" header-value="GET, POST, OPTIONS, PUT"/>
    <response-header name="Access-Control-Allow-Headers" header-name="Access-Control-Allow-Headers" header-value="accept, authorization,  content-type, x-requested-with"/>
    <response-header name="Access-Control-Allow-Credentials" header-name="Access-Control-Allow-Credentials" header-value="true"/>
    <response-header name="Access-Control-Max-Age" header-name="Access-Control-Max-Age" header-value="1"/>
</filters>
</subsystem>
  1. 重新启动野蝇
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CORS:AngularJS + Resteasy 3 + Wildfly 的相关文章

随机推荐

  • 发布网站不会更新我的 CSS 包

    当我在发布模式下从 Visual Studio 运行代码并检查捆绑的样式表时 我可以看到对该捆绑中的 css 文件的更新 但是 当我将网站发布到服务器或本地计算机时 我对样式表的更改尚未生效 捆绑的样式表仍然是旧的样式表 我尝试过重置 II
  • 如何修复 ('throw er; // Unhandled 'error' event') 代码生命周期?

    我尝试创建一个 React 应用程序 我用的是命令提示符但是在创建应用程序后 当我尝试启动 npm 时 它给了我一些错误 我也尝试在 WebStorm IntelliJ 和 Visual Studio Code PowerShell 中创建
  • 角度动画在 IE Edge 中不起作用

    我在 Angular 中向我的组件添加了一个动画 然而 动画在 Chrome 和 Firefox 中工作正常 但在 IE Edge 中 尽管样式在状态更改时正确应用 但动画并未触发 但只是没有指定动画 有人有同样的问题吗 这是我的代码 an
  • 启动 Android Studio 时出错:无法创建 JVM:错误代码-6

    我安装了Android Studio并且运行正常 但因为它有点慢 所以我按照网站上的说明进行操作 Android Studio 速度慢时怎么办尽管我尝试卸载并重新安装 AS 以及 Java 但它使我无法重新打开 android studio
  • 此 jar 包含其签名者证书将在六个月内过期的条目

    我已经以各种方式对我的 jar 进行了签名 但是当我使用以下命令时 我不断收到上述错误消息 jarsigner verify verbose my jar 有没有办法消除这个错误 如果没有重新认证 我的代码会在六个月后停止工作吗 以下是用于
  • 从购物车页面删除 Woocommerce 购物车数量选择器

    我正在尝试从购物车页面删除 Woocommerce 购物车数量选择器 我正在商店存档页面上使用数量输入字段 并将其应用到购物车页面 我怎样才能删除它并且不允许用户更改它 我已尝试使用下面的代码进行以下操作 并从官方 Woocommerce
  • 在 Makefile 中找不到指向的库文件

    我正在尝试编译这个工具 下面是其 Makefile 的开头 CC gcc CFLAGS Wall O2 D TRACES DFLAGS g Wall o0 CPPFLAGS INCLUDES I LDFLAGS LIBRARIES L LD
  • 在 appsettings.json (asp.net core 本地化)中设置文化和 ui-culture?

    我有 asp net core 应用程序 我想要本地化和翻译 v 1 1 0 我希望源代码支持英语和挪威语部署 我发现这可能是一个startup cs配置 RequestLocalizationOptions localizationOpt
  • C 数组可以在元素之间包含填充吗?

    我听说有传言说 在 C 中 包含在结构内部的数组可能在数组元素之间添加了填充 现在显然 任何一对元素之间的填充量都不能变化 或者使用简单的指针算术不可能计算数组中的下一个元素 该谣言还指出 不包含在结构中的数组保证不包含填充 我至少知道那部
  • python、postgresql 中的数据库测试

    如何对使用 postgresql 的 python DAL 进行单元测试 在 sqlite 中 您可以为每个测试创建内存数据库 但对于 postgresql 则不能这样做 我想要一个可用于设置数据库并在测试完成后清理它的库 我使用 Sqla
  • 何时为 JWT 使用 RS256?

    所以 现在我正在构建一个供第三方使用的 API 并且我正在阅读有关 RS256 和 HS256 的内容 我的理解是 两者之间的区别在于 第一个使用公钥进行验证 使用私钥进行签名 而另一个则仅使用一个密钥 因此 如果您使用 RS256 因为您
  • 给自己发送一封电子邮件,但让我回复另一封电子邮件

    我正在使用我的 Web 应用程序平台 node js 上的模块 nodemailer 向使用我的 Web 应用程序的联系页面的某人发送电子邮件给自己 因为 我要向自己发送一封电子邮件 如果我回复该电子邮件 我将再次向自己发送一封电子邮件 而
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • Django:将变量从 get_context_data() 传递到 post()

    变量定义在里面get context view 因为它需要一个id访问正确的数据库对象 class FooView TemplateView def get context data self id kwargs bar Bar objec
  • Click 事件在 IE/Firefox 中触发,但 Chrome 正在放弃事件分配

    我正在调试我的网络应用程序 但遇到了困难 我仅在 Google Chrome 中遇到一种行为 而我的 javascript 无能使我无法找到解决方案 我有一个 ASP 页面 其中包含
  • 配置 pymongo 使用字符串 _id 而不是 ObjectId

    我在用着pymongo用来自不同系统的旧信息播种数据库 我有很多这样的查询 studentId studentsRemote insert price price 在实际的 python 脚本中 studentId作为字符串打印 但在我使用
  • JSF2 复合组件:#{cc.childCount} 和 是否互斥?

    我只是不明白 如果我希望我的复合组件插入子组件 我use
  • 使用 DateJS 仅解析时间字符串

    我正在使用优秀的 但很大 DateJS用于处理我的网络应用程序中的日期和时间的库 我刚刚遇到一些我不知道如何处理的事情 我希望我的用户能够仅输入时间字符串 而不输入日期 但他们应该能够以他们喜欢的任何方式输入它 例如 5 00 pm 17
  • PostgreSQL 相当于 TOP n with TIES: LIMIT “with ties”?

    我正在 SQL Server 中寻找类似的东西 SELECT TOP n WITH TIES FROM tablename 我知道关于LIMIT在 PostgreSQL 中 但是是否存在与上述等效的内容 我只是很好奇 因为它每次都会为我节省
  • CORS:AngularJS + Resteasy 3 + Wildfly

    我正在使用 AngularJS 和 Resteasy 开发一个应用程序 正如预期的那样 我面临着众所周知的问题 XMLHttpRequest cannot load http localhost 8080 No Access Control