苹果金融审核3. 2.1 Business: Other Business Model Issues - Acceptable解决办法分析

针对近期金融类App频繁遭遇的3.2.1(viii)审核问题,本文分享了多种解决策略,包括提交资质文件、代上架及调整App描述等方法,并提供了成功案例供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     元旦过后好多金融(借贷、理财等)软件审核3.2.1(viii)错误,应该是金融审核的新规吧。(viii)用于金融交易、投资或资金管理的应用程序应来自执行此类服务的金融机构, 或必须使用该机构根据其条款 & 条件提供的公共 API。

      目前最好的解决办法就是资质问题,提供营业执照、金融许可证、ICP证。那么就很好上线了。。。。

      但是大多数公司没有金融许可证(我们也没有),解决办法:

    (一) 申请各种证件(符合的金融证件),在附件中提交,那么你就有资质了,一般很容易过,但是还是要随缘,但是有资质了那就好说了,他要啥你给啥就好了,然而都有这些证件的时候,也不会看这篇文章了。。然而这是最可取最靠谱的方法。。

    (二) 自己账号没资质 这应该好多现在都没资质 下面说些不靠谱的方法  审核随缘嘛。

           1.一种办法就是代上架  ,先把自己的APP转让到有资质的账号下  上线后 再转让回来 。。。麻烦。。。你可以找有资质的代上 而且很有可能每次迭代都要转来转去,找不到有资质的不要慌 ,这时候总有类似黑牛的物种出现 交钱代上架 。。。

            2.就是 各种马甲包呗  但是 每次审核就提心吊胆被查出来。

            3.邮件电话(4006701855)交流 ,用你的魅力征服他。。。

       说点靠谱的,最好是公司申请各种资质证书去,这些是公司应该有的。没有资质的情况下,你可以先提交有的东西,比如营业执照、了什么的,一点一点询问交流。。。

案例 :

        有一个外汇方面的 去除了APP内、关键字、描述里面的金融、理财等关键字,声名 :App名称呢隶属于xx公司。App是一家金融衍生品信息服务平台,由xx公司研发运营。是工具类产品。。就过了。。过了。。可能是运气 当然也可能  就是对理财 金融 借贷类的规范 ,也有可能审核的时候搜这些关键词。。。

不说了 我了解的也就这么多,我也没有证件,正在一点点交流,只提供了营业执照。。。后续 知道什么会继续完善这篇文章,现在就这么了吧。祈祷ing

持续更新。。。

接着说下我的

之前:总之没通过审核

(略写) 问苹果顺着他走 就要各种证书提供各种资质  然而木有。。。所以说不要让他们把你认为是正经的金融,如果按他的金融审核流程走,就要提供各种有的没的证书资质协议什么的。。所以我走不动。。。

之后:

       我把APP、关键字、描述 金融、理财等关键字删除掉,重新提交了一个版本,又被打回来了同样的问题,于是我又重新回复了一封邮件如下:

Guideline 3.2.1 - Business - Other Business Model Issues - Acceptable
The seller and company names associated with your app do not reflect the financial institute name “financial institution” in the app or its metadata, as required by Guideline 3.2.1(viii) of the App Store Review Guidelines.

【首先
app隶属于xx公司,App是一家金融衍生品信息服务平台,是一款展示的工具类产品,由xx公司研发运营.
其次 
附件里我们提交了营业证书以及ICP备案.
最后
最好的问候】

回复之后自动进入正在审核中了。。。希望这次回过。。

后续会持续更新。。。。

暂时没得 自动转成正在审核中 两三天了。。。不会动。。CCC

。。。。。

 

动了  过了。。。此处应该欢呼

 

 

 

说下重点,感觉是要去规避理财,借贷等金融的关键词(APP内和一些关键词描述什么的)之后把APP给他反馈尽量远离金融这个大坑。。。

 

下半年 进入了借贷行业 直面3.2.1 其他规避都不好使了。。有了就给。没了就扯。。

 

最终发现 上面所说的基本用处很小 金融衍生的还可以 其他操刀改动太大。。

2018/12/19  上了三个现金贷了 一个套壳 2个裸奔上了 每一个基本耗时半个月左右。。。

 

1/2号又上去了一个  这个运气好点 一周

1/12 又上一个 8天

 

2025-07-15T14:15:48.777+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] o.s.web.servlet.DispatcherServlet : GET "/find", parameters={} 2025-07-15T14:15:48.780+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.example.page.web.controller.SpAttributeController#findByPage() 2025-07-15T14:15:48.789+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8, application/signed-exchange;v=b3;q=0.7] and supported [*/*] 2025-07-15T14:15:48.790+08:00 WARN 97295 --- [page] [nio-8088-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation] 2025-07-15T14:15:48.791+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] o.s.web.servlet.DispatcherServlet : Completed 406 NOT_ACCEPTABLE 2025-07-15T14:15:48.791+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for GET "/error", parameters={} 2025-07-15T14:15:48.792+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse) 2025-07-15T14:15:48.795+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, text/html;q=0.8] 2025-07-15T14:15:48.796+08:00 DEBUG 97295 --- [page] [nio-8088-exec-3] o.s.web.servlet.DispatcherServlet : Exiting from "ERROR" dispatch, status 406
最新发布
07-16
<think>我们正在处理一个Spring Boot异常问题:HttpMediaTypeNotAcceptableException: No acceptable representation。这个异常通常发生在Spring Boot应用无法根据客户端请求的Accept头或路径扩展生成相应格式的响应时。根据提供的引用信息,我们可以总结出以下原因和解决方法: **原因分析:** 1. **内容协商机制冲突**:Spring Boot的内容协商机制试图根据请求的扩展名(如.html)或Accept头来确定响应的媒体类型。当控制器返回的数据类型与请求的预期类型不匹配时,就会抛出此异常。 2. **静态资源与请求路径冲突**:例如,存在一个名为`login.html`的静态文件,同时有一个处理`/login`请求的控制器。当请求`/login.html`时,Spring会尝试将控制器的返回类型(可能是`application/json`)与`.html`扩展名期望的`text/html`进行匹配,导致失败。 3. **缺少消息转换器**:如果控制器返回的对象类型没有对应的消息转换器(如JSON转换器),但根据引用信息,该问题在升级后已转化为媒体类型不匹配问题。 **解决方法:** 1. **禁用路径扩展名匹配**:在Spring Boot配置中禁用基于路径扩展的内容协商,只使用Accept头协商。 ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.favorPathExtension(false); } } ``` 这样配置后,Spring将忽略URL中的扩展名(如`.html`),仅根据`Accept`头决定响应类型[^4]。 2. **分离静态资源与API请求路径**: - 将静态资源放在独立的路径下(如`/static/**`),而API请求使用统一前缀(如`/api/**`)。 - 避免静态文件名与控制器请求路径同名(如将`login.html`改为`signin.html`)[^3]。 3. **确保存在正确的消息转换器**:检查是否包含处理目标媒体类型的转换器(如Jackson库用于JSON)。Spring Boot默认支持JSON,但如需XML等格式需额外添加依赖。 4. **检查控制器返回类型与请求Accept头兼容性**:确保控制器方法能生成客户端请求的媒体类型(如`@RequestMapping`的`produces`属性)。 **示例场景:** 假设有一个返回JSON的控制器: ```java @RestController public class UserController { @GetMapping("/user") public User getUser() { return new User("John"); } } ``` 当客户端请求`/user.html`且未禁用路径扩展时,Spring期望返回`text/html`,但控制器实际返回JSON,从而引发异常。解决方法:禁用路径扩展或修改请求路径。 **代码实现(配置类):** ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer .favorPathExtension(false) // 禁用路径扩展协商 .ignoreAcceptHeader(false) // 启用Accept头协商(默认) .defaultContentType(MediaType.APPLICATION_JSON); // 设置默认类型 } } ``` 通过以上步骤,可有效解决`HttpMediaTypeNotAcceptableException`问题。 §§相关问题§§ 1. 如何自定义Spring Boot的内容协商策略? 2. 除了Jackson,Spring Boot还支持哪些消息转换器? 3. 如何为特定控制器方法指定响应的媒体类型?</think>### Spring Boot中HttpMediaTypeNotAcceptableException异常分析与解决 #### 异常原因分析 当Spring Boot应用出现`HttpMediaTypeNotAcceptableException: No acceptable representation`异常时,通常由以下原因引起: 1. **内容协商机制冲突**:Spring的内容协商机制试图根据请求的扩展名(如`.html`)或`Accept`头确定响应类型,但控制器返回的数据类型与请求预期不匹配[^3] 2. **路径冲突**:静态资源文件名与控制器请求路径冲突(如存在`login.html`静态文件同时有`/login`控制器)[^3] 3. **消息转换器缺失**:缺少处理特定返回类型的消息转换器(如缺少JSON转换器) 4. **版本差异**:不同Spring Boot版本对内容协商的处理机制不同(2.x与3.x行为差异)[^2] #### 解决方案 1. **禁用路径扩展协商**(推荐) 在配置类中禁用基于路径扩展的内容协商: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.favorPathExtension(false); // 禁用路径扩展检测 } } ``` 这样Spring将仅根据`Accept`头决定响应类型[^4] 2. **分离资源路径** ```java // 应用配置类中 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**") .addResourceLocations("classpath:/static/"); } ``` - 静态资源使用`/static/`前缀(如`/static/login.html`) - API接口使用`/api/`前缀(如`/api/login`)[^3] 3. **添加消息转换器** 确保依赖中包含JSON处理库: ```xml <!-- pom.xml --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> ``` 4. **显式指定produces属性** 在控制器方法中明确声明支持的媒体类型: ```java @GetMapping(value = "/data", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Object> getData() { // ... } ``` #### 排查流程图 ```mermaid graph TD A[异常发生] --> B{检查请求路径} B -->|含.html等扩展名| C[禁用路径扩展协商] B -->|无扩展名| D{检查Accept头} D -->|Accept: text/html| E[添加JSON转换器] D -->|Accept: application/json| F[检查控制器produces属性] F --> G[显式声明produces] ``` #### 典型场景示例 **错误请求**: `GET /user.html` → 控制器返回JSON但期望HTML响应 → 异常[^3] **正确方案**: `GET /api/user` → 返回JSON `GET /static/user.html` → 返回静态HTML 通过路径分离和内容协商配置,可彻底解决此异常[^4]。
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值