gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:03:59 26 4
gpt4 key购买 nike

我正在使用 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)")
}
}
}

最佳答案

您需要自己实现 -addGETHandlerForBasePath... 以添加 Access-Control-Allow-Origin: * header ,因为此 API 不允许自定义 header 。

请参阅 https://github.com/swisspol/GCDWebServer/blob/master/GCDWebServer/Core/GCDWebServer.m#L1015 中的源代码.

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com