これは、重要な情報または何かを見逃している可能性が高いですが、ここに行きます.
現在、 HTTP.Conduitライブラリを使用して、独自のヘッダー、つまりx-oauth-basic
を HTTP リクエストに挿入しようとしています。ある程度は機能しますが、意図した方法ではありません。
submitPostRequest urlString githubKey body =
case parseUrl urlString of
Nothing -> return $ "URL Syntax Error"
Just initReq -> withManager $ \manager -> do
let req = initReq { secure = False -- Turn on https
, method = "POST"
, requestHeaders = [("x-oauth-basic", (encodeUtf8 githubKey))]
<> [("User-Agent", "HsCMS")]
, requestBody = RequestBodyBS (toStrict body)
, checkStatus = \_ _ _ -> Nothing
}
res <- httpLbs req manager
return $ responseBody res
重要なビットは
requestHeaders = [("x-oauth-basic", (encodeUtf8 githubKey))]
<> [("User-Agent", "HsCMS")]
HTTP シンクホールを使用すると、ヘッダーが のように形成されていることがわかりますHTTP_X_OAUTH_BASIC
。HTTP
ビットが前にあるはずはありません。curl でのテスト、
curl -u 78y8713k1j23nkjnkjnuy366366363666gdasddd:x-oauth-basic --request POST --data '{"description":"Updated via API","files":{"file1.txt":{"filename": "newsies.txt", "content":"New Demo"}}' http://www.posttestserver.com/post.php\?dir\=Testing
the header does not appear there , これは、シンクホールが x-headers を検出していないことを示唆しています。curl の例は、目的のエンドポイントである github API でも機能するため、curl のアプローチは正しく、HTTP.Conduit のアプローチは正しくないことがわかります。
だから私の質問は、HTTP.Conduit ヘッダーを、取得してx-header
いる現在の代わりに curls などの として表示するにはどうすればよいhttp-x-header
ですか?
また、心配しないでください。使用されている github キーは実際のキーではありません...
アップデートして修正
したがって、Michael Snoymans の回答へのコメントで述べたように、別のヘッダーを使用することで解決されまし("Authorization", "token " <> (encodeUtf8 githubKey))
た<token>:x-oauth-basic
。
タイトルをもう少し適切に更新しようとしましたが、提案は受け付けています...
助けてくれてありがとう!