第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在發(fā)出 HTTP 請(qǐng)求時(shí),Go 是否有某種方式使用 DefaultNetworkCredenti

在發(fā)出 HTTP 請(qǐng)求時(shí),Go 是否有某種方式使用 DefaultNetworkCredenti

Go
瀟瀟雨雨 2022-07-11 15:09:45
我正在編寫一個(gè)簡(jiǎn)單的 Go 實(shí)用程序,該實(shí)用程序向 Internet 發(fā)出一些 POST 請(qǐng)求,但我需要通過代理并在不知道用戶憑據(jù)的情況下使用 NTLM。我見過如下 CSharp 代碼:wc = new CookieWebClient();wc.UseDefaultCredentials = true;wc.Proxy = WebRequest.DefaultWebProxy;wc.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;在 Go 中,我設(shè)法確定了系統(tǒng)代理,感覺就像是 hack:import (    "net/http"    "net/url"    "strings"    "golang.org/x/sys/windows/registry")func getSystemProxy() func(req *http.Request) (*url.URL, error) {    var e error    var k registry.Key    var proxy *url.URL    var v string    // Open the "Internet Settings" registry key    k, e = registry.OpenKey(        registry.CURRENT_USER,        strings.Join(            []string{                "Software",                "Microsoft",                "Windows",                "CurrentVersion",                "Internet Settings",            },            "\\",        ),        registry.QUERY_VALUE,    )    if e != nil {        return http.ProxyFromEnvironment    }    defer k.Close()    // Read the "ProxyServer" value    v, _, e = k.GetStringValue("ProxyServer")    if (e != nil) || (v == "") {        return http.ProxyFromEnvironment    }    // Get the http= portion and fix it up    v = strings.Split(v, ";")[0]    v = strings.Replace(v, "=", "://", 1)    // Parse url    if proxy, e = url.Parse(v); e != nil {        return http.ProxyFromEnvironment    }    return http.ProxyURL(proxy)}我一直無(wú)法找到與 CSharp 的https://docs.microsoft.com/en-us/dotnet/api/system.net.credentialcache.defaultnetworkcredentials?view=netcore-3.1等效的 Go 。我找到了https://github.com/Azure/go-ntlmssp但這需要我對(duì)我沒有的用戶憑據(jù)進(jìn)行硬編碼,并且我需要為每個(gè)用戶編譯一個(gè)新的二進(jìn)制文件,我會(huì)這樣做不想做。我正在尋找 0 配置解決方案。我希望這盡可能動(dòng)態(tài)。如果 CSharp 能做到,為什么 Go 不能呢?
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

我被告知我可以使用 WinHTTP 或 WinInet 來(lái)實(shí)現(xiàn)這一點(diǎn)。我將使用golang.org/x/sys/windows包并從 DLL 中調(diào)用程序?;蛘?,有人告訴我,我可以github.com/go-ole/go-ole通過 COM 對(duì)象使用和使用 WinHTTP,就像在另一個(gè) SO 問題中一樣:Windows system credentials in Go HTTP NTLM requests。

更新:我最終決定選擇 WinInet,并創(chuàng)建了自己的包 (gitlab.com/mjwhitta/win/wininet),其中包含一個(gè) http.Client,可用于發(fā)出 GET 和 POST 請(qǐng)求。有關(guān)如何使用它的示例,請(qǐng)參閱自述文件。如果我有需要,我可能會(huì)在未來(lái)擴(kuò)展它。歡迎請(qǐng)求請(qǐng)求。

最后更新:男孩,我覺得自己很愚蠢。WinInet 不希望為你做 NTLM ......所以我將它移植到 WinHttp (gitlab.com/mjwhitta/win/winhttp)。


查看完整回答
反對(duì) 回復(fù) 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)