Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by return registrationBean
Designing robust and scalable APIs is a crucial aspect of modern software development. A well-designed API enhances usability, security, and maintainability. This blog explores essential API design best practices, answering common questions and providing practical guidelines. How Do You Design a RESTful API? A RESTful API follows REST (Representational State Transfer) principles, ensuring consistency and scalability.
Shiro CVE-2022-40664 请求转发导致的验证绕过
Apache Shiro before 1.10.0, Authentication Bypass Vulnerability in Shiro when forwarding or including via RequestDispatcher.
配置嵌入式服务器-CSDN博客
一、如何定制和修改Servlet容器的相关配置 修改和server有关的配置(ServerProperties) server.port=8081 server.context‐path=/tx server.tomcat.uri-encoding=UTF-8 二、注册servlet三个组件【Servlet、Filter、Listener】 由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。之前这三个都是配置在web.xml中的,现在: MyServlet import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyServlet...
SpringBoot实战:轻松实现XSS攻击防御(注解和过滤器)-CSDN博客
引言 随着Web应用的普及,网络安全问题也日益凸显。跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web安全漏洞,它允许攻击者将恶意脚本注入到其他用户浏览和使用的正常网页中。当其他用户浏览这些网页时,恶意脚本就会在他们的浏览器上执行,从而可能导致信息泄露、会话劫持等严重后果。XSS攻击的普遍性和潜在危害性使其成为Web应用安全中不可忽视的一部分。 本文旨在探讨如何在Spring Boot应用程序中有效地防御XSS攻击。我们将介绍两种主要的防御手段:注解和过滤器。通过这两种方式,开发者可以轻松地在Spring Boot应用中实现XSS攻击的防御,从而保障用户的数据安全和应用的稳定运行。 一、XSS攻击概述 XSS攻击,全称为跨站脚本攻击(Cross-Site Scripting),是一种常见的网络攻击手段。它主要利用了Web应用程序对用户输入验证的不足,允许攻击者将恶意脚本注入到其他用户浏览的网页中。...
一文了解SpringBoot-CSDN博客
1 springboot介绍 Spring Boot是一个用于简化Java应用程序开发的框架。它基于Spring框架,继承了Spring框架原有的优秀特性,比如IOC、AOP等, 他并不是用来代替Spring的解决方案,而是和Spring框架紧密结合,进一步简化了Spring应用的整个搭建和开发过程通过自动配置和约定优于配置的原则,提供了一种快速构建独立、可部署的Spring应用程序的方式。 Spring Boot减少了开发人员在配置上的工作量,使得开发者能够更专注于业务逻辑的实现。它还提供了丰富的功能和插件,可以轻松集成到各种开发环境和工具中。 再来详细解释一下,如果我们基于SSM框架进行过开发,我们可以理解,Spring在集成SpringMVC、Mybatis时,需要做大量的xml文件配置,在集成其他框架或中间件时,也是同样的道理。而再对比一下SpringBoot开发,我们可以发现,我们只需要引入不同的Starters的maven依赖,就可以开箱即用的进行开发。这就是SpringBoot为我们做的:提供默认的配置方式让我们更容易使用。 2003年Rod...
配置Druid的监控页面和WebStatFilter,以通过指定的路径访问Druid的监控页面,并且采集web-jdbc关联监控的数据_druid:webstatfilter:-CSDN博客
/** * 配置 druid的监控页功能 * @return */ // @Bean public ServletRegistrationBean statViewServlet(){ StatViewServlet statViewServlet = new StatViewServlet(); ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<>(statViewServlet, "/druid/*"); registrationBean.addInitParameter("loginUsername","admin"); registrationBean.addInitParameter("loginPassword","123456"); return registrationBean; } /** * WebStatFilter 用于采集web-jdbc关联监控的数据。 */ // @Bean public...
微服务问题-CSDN博客
SpringCloud是基于SpringBoot分布式系统开发工具,它提供了一些开箱即用的组件。 Spring Cloud和Dubbo的区别? Dubbo采用RPC通信,Spring Cloud采用基于HTTP的REST方式。后者更加灵活。 Spring Cloud是一个完整的微服务的框架,它提供服务注册与发现、负载均衡、配置管理等功能。Dubbo是一个RPC框架主要解决的是分布式服务之间的调用问题。 Spring Cloud是基于Java语言开发的也支持其他语言,Dubbo是纯Java语言开发的。 Dubbo协议 CAP C (Consistency) 强一致性 A (Availability) 可用性 P (Partition tolerance) 分区容错性 Zookeeper 保证的是 CP —> 满足一致性,分区容错的系统,通常性能不是特别高...
【SpringBoot】SpringBoot的web开发-CSDN博客
📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 Wbe开发 1)、创建SpringBoot应用,选中我们需要的模块; 2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码; 自动配置原理?这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx 创建好了项目之后,我们先来讲解一下SpringBoot对于静态资源的相关配置规则,因为我们现在暂时来开发一个前后端没有分离的很彻底的应用(如果前后端分离的很彻底,我们只用SpringBoot来做后端接口),所以必须要知道怎么使用SpringBoot的静态资源。 使用webjars...
SpringBoot+Durid+dynamic-datasource实现多数据源事务_dynamic-datasource-spring-boot-starter-CSDN博客
引言: 在现代的应用程序中,使用多个数据源来处理不同的业务需求已成为常态。然而,处理多数据源之间的分布式事务是一个复杂的问题。本文将介绍如何使用Spring Boot、Druid和dynamic-datasource-spring-boot-starter来实现多数据源的分布式事务。 背景 在传统的单数据源应用中,事务管理相对简单。但当引入多个数据源时,事务管理变得更加复杂。为了解决这个问题,我们将使用Spring Boot作为应用程序的基础框架,Druid作为数据源连接池,并结合dynamic-datasource-spring-boot-starter来实现动态数据源切换和分布式事务管理。 集成Druid数据源连接池和dynamic动态数据源切换和分布式事务管理 Druid是一款高性能的数据库连接池,具有强大的监控和统计功能。在Spring Boot项目中集成Druid非常简单,只需添加相关依赖并进行配置即可。可以通过以下步骤来完成集成: 在pom.xml文件中添加依赖。 <dependency> <groupId>com.alibaba</groupId>...
SpringBoot系列教程web篇Servlet 注册的四种姿势
本篇主要带来在 SpringBoot 环境下,注册自定义的 Servelt 的四种姿势 @WebServlet 注解 ServletRegistrationBean bean 定义 ServletContext 动态添加 普通的 spring bean 模式 1.
SpringBoot整合Druid数据源并配置监控-阿里云开发者社区
这里SpringBoot版本为1.5.9.RELEASE。 【1】pom文件添加依赖 【2】yml文件对数据源进行配置 yml文件示例如下: 如下图所示: 从initialSize属性开始,属性颜色呈现为黄色,这是不正常的。SpringBoot中,数据源配置默认对应DataSourceProperties类,很显然我们为Druid数据源配置的属性与默认数据源配置文件类不符。 解决方法: 容器中注册自定义数据源! 【3】注册Druid数据源 MyConfig 类如下: 测试如下图,拿到了配置文件中的数据源配置: 【4】配置Druid的监控 之所以使用Druid数据源,除了其性能可靠外,还在于其完善的数据监控机制。其主要是由StatViewServlet和WebStatFilter(用于配置Web和Druid数据源之间的管理关联监控统计)实现。 配置类如下: 测试如下: 其对应xml配置如下(SpringBoot中无需xml): 【5】Nginx+Tomcat+Druid 如下图所示,Nginx后面跟两个Tomcat:...
SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式)-阿里云开发者社区
2023-12-12 10 简介: SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式) 由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。 故而采用其他方式来注册三大组件:代码注册和注解注册。 查看ServletRegistrationBean源码如下: 注册示例如下: 查看FilterRegistrationBean源码如下: 注册示例如下: 查看ServletListenerRegistrationBean源码如下: 注册Listener示例如下: SpringBoot帮我们自动SpringMVC的时候,自动的注册SpringMVC的前端控制器:DIspatcherServlet。 查看DispatcherServletAutoConfiguration源码如下: 在上面的源码注释中,频繁见到如下字样:...
如何在Filter中使用Spring容器中的Bean?-阿里云开发者社区
【1】XML配置形式 也就是在过滤器中使用Spring容器中的bean。 我们使用过滤器一般是这么配置的: 这样的配置无法在过滤器中使用spring bean,因为filter比bean先加载。 也就是spring会先加载filter指定的类到container中,这样filter中注入的spring bean就为null了。 正确配置如下: Spring 配置文件中配置该bean: DelegatingFilterProxy类遵循filter-name-bean的原则,会根据web.xml中filter-name的值查找到spring配置文件中id与filter-name相同的值,然后把接受到的处理信息传递给相对应的类处理。 另外关于targetFilterLifecycle,查看DelegatingFilterProxy源码部分如下: 测试结果如下: 【2】SpringBoot2.0中使用代码注册Filter SysVisitFilter 示例如下: MyFilterConfig 编码注册如下: 需要额外注意下面这行代码: 如果没有该代码,系统中的过滤器链如下图:...
SpringBoot过滤器、拦截器区别,以及使用场景!
【原】SpringBoot过滤器、拦截器区别,以及使用场景! 冷月寒风 2023-09-27 | 转藏 关系图 Filter-过滤器 ●在web应用启动的时候初始化一次, 在web应用停止的时候销毁●可以对请求的URL进行过滤, 对敏感词过滤●挡在拦截器的外层●实现的是 javax.servlet.Filter 接口 ,是 Servlet 规范的一部分●在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后●依赖Web容器●会多次执行 2、 HttpServletRequestWrapper 请求到达之前对 request 进行修改 @Slf4j public class RequestWrapper extends HttpServletRequestWrapper { public RequestWrapper(HttpServletRequest request) { super(request); log.info("RequestWrapper"); } @Override public String...
如何实现简单的分布式链路功能? - 程序员小波与Bug - 博客园
为什么需要链路跟踪?微服务环境下,服务之间相互调用,可能存在 A->B->C->D->C 这种复杂的服务交互,那么需要一种方法可以将一次请求链路完整记录下来,否则排查问题不好下手、请求日志也无法完整串起来。 假设我们从用户请求接口开始,每次请求需要有唯一的请求 id (我们暂且标记为 traceId)来标识这次请求,然后当接口收到请求后,调用后续服务或者 mq 时,能将该 traceId 一直传递下去,并且 log 日志中可以打印出来,这样就实现了简单的链路功能。 微服务环境下,用户请求一般优先经过网关,网关再将请求转发到各个服务。微服务网关多种多样,比如 Nginx、Zuul、Spring Cloud Gateway、Kong、Traefik 等,假设存在这样一条链路,用户请求 -> nginx -> zuul -> service-a、service-b 等(这里我们使用 Eureka 作为服务注册中心,使用 Feign 来实现微服务之间相互调用、使用 Zuul 作为服务前置网关),调用大致如下: 这样的话,从 nginx 请求开始,我们需要标识本次请求的...
124.【SpringBoot 源码刨析C】(六)
8.嵌入式Servlet容器 (1).切换嵌入式Servlet容器 默认支持的webServer Tomcat, Jetty, or Undertow ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导创建服务器 切换服务器 原理 SpringBoot应用启动发现当前是Web应用。web场景包-导入tomcat web应用会创建一个web版的ioc容器 ServletWebServerApplicationContext ServletWebServerApplicationContext 启动的时候寻找 ServletWebServerFactory(Servlet 的web服务器工厂—> Servlet 的web服务器) SpringBoot底层默认有3个的WebServer工厂;TomcatServletWebServerFactory, JettyServletWebServerFactory, or UndertowServletWebServerFactory...
89.【SpringBoot-02】(三)-阿里云开发者社区
观察到德鲁伊的后台,会检测到SQL语句的变化 (4).配置Druid数据源过滤器 注意点:DruidConfig文件一定要添加配置注解,在里面配置的一些servlet和filter都要添加@Bean注解 (5).注解的详解?
SpringCloud搭建保姆级教程 - 佛祖让我来巡山 - 博客园
使⽤Spring Cloud Netflix 中的 Eureka 搭建服务注册与发现中⼼ 1、创建SpringBoot应用添加依赖 1、spring web 2、eureka server 2、配置服务注册与发现中⼼ ## 设置服务注册与发现中⼼的端⼝ server: port: 8761 ## 在微服务架构中,服务注册中⼼是通过服务应⽤的名称来区分每个服务的 ## 我们在创建每个服务之后,指定当前服务的 应⽤名/项⽬名 spring: application: null name: service-eureka eureka: client: ## ip 就是服务注册中⼼服务器的ip,port 就是服务注册与发现中⼼设置的port service-url: defaultZone: 'http://192.168.54.59:8761/eureka' ## 设置服务注册与发现中⼼是否为为集群搭建(如果为集群模式,多个eureka节点之间需要相互注册) register-with-eureka: false ## 设置服务注册与发现中是否作为服务进⾏注册...
同源策略以及SpringBoot的常见跨域配置_言成言成啊的博客-CSDN博客
先说明一个坑。在跨域的情况下,浏览器针对复杂请求,会发起预检OPTIONS请求。如果服务端对OPTIONS进行拦截,并返回非200的http状态码。浏览器一律提示为cors error。 1.1 同源策略 浏览器的同源策略(Same-Origin Policy),用于限制网页中的JavaScript代码与来自不同源的资源进行交互。 同源策略的规则包括 协议相同 域名或主机地址相同 端口相同 下图为是否同源的示例 1.2 跨域资源共享 跨域资源共享(Cross-Origin Resource Sharing,CORS)是一种机制,为了绕过浏览器的同源策略(Same-Origin Policy)而设计的,它允许网页从不同源(域名、协议、端口)获取或发送HTTP请求,以实现跨域数据交换。 CORS将HTTP请求分为两类,如果详细了解,请查阅跨域资源共享-W3C 简单请求 请求方式 GET POST HEAD 特定的Content-Type值 text/plain multipart/form-data application/x-www-form-urlencoded...
带你了解SpringBoot---开启Durid 监控
整合Druid 到Spring-Boot 使用手册: https://github.com/alibaba/druid 中文手册: https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 English手册: https://github.com/alibaba/druid/wiki/FAQ Druid Spring Boot Starter 手册:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter HiKariCP: 目前市面上非常优秀的数据源, 是springboot2 默认数据源。 Druid: 性能优秀,Druid 提供性能卓越的连接池功能外【Java 基础】,还集成了SQL 监控,黑名单拦截等功能,强大的监控特性,通过Druid 提供的监控功能,可以清楚知道连接池和SQL 的工作情况,所以根据项目需要,我们也要掌握Druid 和SpringBoot 整合。 整合Druid...
SpringCloud教程(中)_装不满的克莱因瓶的博客-CSDN博客
目录 八、Hystrix(服务降级) 8.1、Hystrix基本概念 8.1.1、分布式系统面临的问题 8.1.2、Hystrix是什么? 8.1.3、服务降级 概念 哪些情况会触发降级 8.1.4、服务熔断 8.1.5、服务限流 8.2、Hystrix案例 8.2.1、Hystrix支付微服务构建(未加入熔断降级前) (1)新建cloud-provider-hygtrix-payment8001 (2)pom (3)yml配置文件 (4)主启动类 (5)Service业务类 (6)Controller (7)测试 8.2.2、Jmeter并发压力测试 8.2.3、Jmeter压测结论 8.2.4、新建消费者80 (1)新建cloud-consumer-feign-hystrix-order80 (2)pom (3)yml配置文件 (4)主启动类 (5)Service Feign接口 (6)Controller (7)测试 8.2.5、如何解决 8.2.6、服务降级(提供者) (1)将8001 Hystrix提供者的Service方法改为如下 (2)主启动类激活 (3)测试...
Spring Boot初阶篇笔记
SpringBoot笔记 SpringBoot官方文档 一、SpringBoot的常用注解 @ConfigurationProperties、@PropertySource、@ImportResource的区别 1.@ConfigurationProperties: @ConfigurationProperties:告诉SpringBoot将本类中的所有属性与配置文件中的相关属性进行绑定; 如:@ConfigurationProperties(prefix = "person") 就是将配置文件中前缀为person下边的属性与该注解所在类中的属性进行绑定 2.@PropertySource: @PropertySource:加载指定的配置文件 如:@PropertySource("classpath:person.properties") 3.@ImportResource: @ImportResource:导入Spring的配置文件xxx.xml,让配置文件中的内容生效;...
SpringBoot解决跨域的方法详细教程_springboot允许跨域访问_一花一world的博客-CSDN博客
Spring Boot提供了多种解决跨域问题的方法,以下是其中几种常用的方法: 使用@CrossOrigin注解是一种简单且快速的解决跨域问题的方法。在Spring Boot的Controller类或方法上添加@CrossOrigin注解,可以指定允许跨域访问的源、方法、头部等信息。 使用@CrossOrigin注解 @RestController public class MyController { @CrossOrigin(origins = "http://example.com") @GetMapping("/api/data") public String getData() { return "data"; } } origins:指定允许跨域访问的源,可以是单个源或多个源的数组,默认为*,表示允许所有源访问。 methods:指定允许跨域访问的HTTP方法,可以是单个方法或多个方法的数组,默认为GET、POST和HEAD。 allowedHeaders:指定允许跨域访问的自定义头部,可以是单个头部或多个头部的数组,默认为允许所有头部。...
SpringBoot使用ProxyServlet实现HTTP反向代理_springboot httproxy 反向代理-CSDN博客
<dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId> <version>1.11</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> proxy: servlet_url: /proxybaidu/* target_url: https://www.baidu.com @Configuration public class ProxyServletConfiguration { @Value("${proxy.servlet_url}") private String servlet_url; @Value("${proxy.target_url}") private String...
Spring Boot 数据库操作Druid和HikariDataSource
目录 JDBC+HikariDataSource 应用实例-需求 ● 需求:演示Spring Boot 如何通过jdbc+HikariDataSource 完成对Mysql 操作 说明: HikariDataSource : 目前市面上非常优秀的数据源, 是springboot2 默认数据源 创建测试数据库和表 -- 创建furns_ssm DROP DATABASE IF EXISTS spring_boot; CREATE DATABASE spring_boot; USE spring_boot; -- 创建家居表 CREATE TABLE furn( `id` INT(11) PRIMARY KEY AUTO_INCREMENT, ## id `name` VARCHAR(64) NOT NULL, ## 家居名 `maker` VARCHAR(64) NOT NULL, ## 厂商 `price` DECIMAL(11,2) NOT NULL, ## 价格 `sales` INT(11) NOT NULL, ## 销量 `stock` INT(11) NOT NULL,...
Druid监控页面配置用户密码、去除Ad_druid默认账号密码_Benjamin℡的博客-CSDN博客
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.16</version> </dependency> 监控页面访问路径:http://localhost:21018/context-path/druid/index.html @Bean public ServletRegistrationBean statViewServlet() { final ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); // 配置druid参数...
SpringBoot:yml文件详解-CSDN博客
目录 获取数据第三种方式 数据可能是一个对象形式, 不需要一个一个获取, 定义一个对应的类, 要求属性与yml的数据的二级属性名一样, 使用springboot提供的注解@ConfigurationProperties,进行属性与yml数据的一一映射 多环境配置 yml多环境配置: 第一种方式: 单个文件 application.yml的多环境配置 #全局配置文件: application.yml #共同的配置,写在全局配置文件中 spring: application: name: demo4 profiles: active: prod #激活某个环境: 使用那个环境 --- # 某个环境的配置文件 #给环境取名字 开发环境: dev spring: profiles: dev #环境的配置 server: port: 8080 --- # 某个环境的配置文件 #测试环境 test spring: profiles: test server: port: 9090 --- # 某个环境的配置文件 #生产环境 prod pro spring:...
Spring Boot 整合 Flowable-ui-modeler 6.7.2
目录 1、使用idea创建一个Maven项目,然后添加"spring-boot-starter-web"依赖。整合代码下载地址:https://download.csdn.net/download//85146346 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 注意:使用“spring-boot-starter”进行包版本控制,因此需要添加“spring-boot-starter-parent”作为父包 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version> <relativePath/> </parent> 1、下载flowable-engine-main源码文件...
springboot框架_最不会程序的程序猿的博客-CSDN博客
1.什么是springboot框架 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。 总之springboot可以简化spring的搭建,并且快速创建一个spring的应用程序。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 2.springboot的特点 (1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs; (2)内嵌Tomcat或Jetty等Servlet容器; (3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;...
Springboot框架_好像认识你好久了的博客-CSDN博客
web的三大组件为:Servlet和Filter以及Listener监听器。 为什么要注册这三大组件呢? 因为后面springboot有可能要集成第三方框架,而第三方框架的底层可能就依赖于过滤器或者servlet. 在ssm中注册我们都是在xml文件中配置,现在没有xml文件了,我们如何注册呢? @Configuration //该注解是指将此类作为配置类 public class MyConfig { @Bean //理解为配置文件中<bean > public ServletRegistrationBean<Servlet> registrationBean(){ //创建一个Servlet注册器.
8. 예외 처리와 오류 페이지
LogFilter에서 로그 출력 REQUEST [5a44ed08-cc80-4a68-b126-f8192d76714b][REQUEST][/error-ex] → LogFilter 서블릿 호출 컨트롤러 errorEx() 컨트롤러에서 RuntimeException(”예외 발생!”) 호출 서블릿으로 예외 전달 필터로 예외 전달 필터에서 예외 catch 이후 로그 출력 : EXCEPTION Request processing failed: java.lang.RuntimeException: 에외 발생! finally 로그 출력 RESPONSE [5a44ed08-cc80-4a68-b126-f8192d76714b][REQUEST][/error-ex] WAS 로 예외 전달 WebServerCustomizer 에서 ErrorPage errorPageEx = new ErrorPage*(*RuntimeException.class, "/error-page/500"*)*; /error-page/500 으로...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with return
Contact return, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack