5

次のような認証済みリクエストを作成しています。

let url = "https://datafeeds.networkrail.co.uk/ntrod/CifFileAuthenticate?type=CIF_ALL_FULL_DAILY&day=toc-full"
let auth = "Basic " + (username + ":" + password |> Encoding.UTF8.GetBytes |> Convert.ToBase64String)
Http.Request(url, headers=["Authorization", auth])

Http.Request は FSharp.Data からのものです

コンパイルされた F# アプリケーションでは問題なく動作しますが、これを F# インタラクティブで実行すると、送信された要求が若干異なり、次のエラーが発生します。

System.Net.WebException: The remote server returned an error: (403) Forbidden.
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

フィドラーの下を見ると、その URL はhttps://nr-datafeed-cif.s3.amazonaws.com/CIF_ALL_FULL_DAILY%2Ftoc-full.jsonにリダイレクトする 302 を返します?...

しかし、fsi の下では、後続のリクエストはhttps://nr-datafeed-cif.s3.amazonaws.com/CIF_ALL_FULL_DAILY/toc-full.json ?... 代わりに送信されます。

4

0 に答える 0