• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何使用 GCDWebServer 配置代理以支持跨域请求

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:53:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 GCDWebServer 的本地服务器在 WKWebView 上呈现本地 Web 内容,但由于 cookie 位于后端,我有一个跨域请求。我该如何配置一个代理来解决这个问题。

注意:我已经尝试在 GitHub 上实现一个名为 CorsProxy 的东西,但它已经过时了,坦率地说并不能解决我的问题,创建一个代理。

我遇到了解决类似问题的答案,但是我在 GCDWebServer 上运行我的 webView,但我不知道如何在这个特定的本地服务器上创建这样的代理?

有什么帮助吗?

这是我的代码:

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler {

    var wkWebView: WKWebView!
    var webServer = GCDWebServer()    
    var contentController = WKUserContentController()    

    func initWebServer() {
        let folderPath = Bundle.main.path(forResource: "www", ofType: nil)            
        webServer.addGETHandler(forBasePath: "/", directoryPath: folderPath!, indexFilename: "index.html", cacheAge: 0, allowRangeRequests: true)            
        webServer.start(withPort: 8080, bonjourName: "GCD Web Server")            
    }

    public override func viewDidLoad() {
        super.viewDidLoad()
        
        initWebServer()
        
        let userScript = WKUserScript(source: "helloMsg2(\"boooo hoo hoo hoooo\")", injectionTime: .atDocumentEnd, forMainFrameOnly: true)
        
        contentController.addUserScript(userScript)
        contentController.add(self, name: "callback")
        
        let config = WKWebViewConfiguration()
        config.userContentController = contentController
        
        
        wkWebView = WKWebView(frame: view.bounds, configuration: config)
        wkWebView.scrollView.bounces = false
        wkWebView.uiDelegate = self
        wkWebView.navigationDelegate = self
        view.addSubview(wkWebView!)
    
        wkWebView.load(URLRequest(url: webServer.serverURL!))
    }

    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "callback" {
            print("message from javaScript is: \(message.body)")
        } else {
            print("message from javaScript is: \(message.body)")
        }
    }
}



Best Answer-推荐答案


这可能会有所帮助support CORS . 只需将 Access-Control-Allow-Origin: * 添加到响应 header 中即可。

关于ios - 如何使用 GCDWebServer 配置代理以支持跨域请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49350201/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap