You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic 6+Capacitor 4 iOS应用TinyMCE编辑器Referer头缺失问题求助

解决TinyMCE在iOS Capacitor应用中Referer请求头缺失的问题

针对你用Ionic 6、Capacitor 4、Angular 15开发iOS应用时,集成@tinymce/tinymce-angular@7.0.0出现的Referer请求头缺失问题,试试以下几个针对性方案:

1. 配置Capacitor的WebView全局请求头

在capacitor.config.ts中添加WebView的额外HTTP头配置,强制注入Referer:

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.your.app',
  appName: 'Your App',
  webDir: 'dist/your-app',
  ios: {
    webViewPreferences: {
      additionalHttpHeaders: {
        'Referer': 'https://your-app-domain.com' // 替换为你的实际域名或自定义合法值
      }
    }
  }
};

export default config;

修改后执行以下命令同步到iOS项目:

ionic build
npx cap sync ios

2. 修正TinyMCE初始化配置参数

你之前使用的data-referrer不是TinyMCE的合法配置项,改用官方支持的referrer_policy结合document_base_url来生成正确的Referer:

import { Component } from '@angular/core';

@Component({
  selector: 'app-editor',
  templateUrl: './editor.component.html'
})
export class EditorComponent {
  editorConfig = {
    height: 500,
    document_base_url: 'https://your-app-domain.com/', // 设置编辑器的基准URL
    referrer_policy: 'origin-when-cross-origin', // 可根据需求选:no-referrer、origin等
    // 其他编辑器配置项...
  };
}

3. iOS端拦截WebView请求手动补全Referer

在iOS项目的AppDelegate.swift中添加WebView请求拦截逻辑,手动为TinyMCE相关请求添加Referer头:

import UIKit
import Capacitor
import WebKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, WKNavigationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // 获取Capacitor的WebView并设置导航代理
        if let webView = (window?.rootViewController as? CAPBridgeViewController)?.webView {
            webView.navigationDelegate = self
        }
        return true
    }

    // 拦截请求并添加Referer
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        var mutableRequest = navigationAction.request
        // 仅针对TinyMCE相关请求添加(可根据实际URL调整判断条件)
        if let url = mutableRequest.url, url.host?.contains("tinymce") ?? false {
            mutableRequest.setValue("https://your-app-domain.com", forHTTPHeaderField: "Referer")
        }
        decisionHandler(.allow)
    }
}

4. 检查CDN加载的Referer策略

如果是通过CDN加载TinyMCE核心脚本,在index.html中加载时指定referrerpolicy属性:

<script src="https://cdn.tiny.cloud/1/your-api-key/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>

内容的提问来源于stack exchange,提问作者john week

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:33:14