次のような認証済みリクエストを作成しています。
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 ?... 代わりに送信されます。