Отправка файлов cookie единого входа при выполнении ajax-вызова в websharper
Я создал сайт с помощью WebSharper и наткнулся на проблему. Я хочу интегрировать сайт с VSTS REST API. Чтобы сделать это (кажется, не нужно), мне нужно переслать сессионный cookie. Как мне это сделать в вызове WebSharper-Ajax. Моя текущая реализация вызова Ajax до того, как она мне понадобилась, выглядит следующим образом и прекрасно работает для других нужд, которые у меня были до сих пор.
let Ajax (request : Request) =
let httpMethod = request.Method
let url = request.EndPoint
let data = request.AsJson
let success ok =
System.Action<obj,string,JqXHR>(
fun res _ _ ->
let result = (res :?> string |> Json.Parse)
if JS.HasOwnProperty result "error" then
{
ErrorType = result?error
Reason = result?reason
} |> pushError
else
result
|> Success
|> ok
)
let contentType = Union<bool,string>.Union2Of2("application/json")
try
Async.FromContinuations
<| fun (ok, ko, _) ->
let settings = JQuery.AjaxSettings(
Url = url,
DataType = JQuery.DataType.Text,
Type = As<JQuery.RequestType> httpMethod,
Success = success ok,
ContentType = contentType,
Error = System.Action<JqXHR,string,string>(fun jqXHR _ _ ->
let error =
jqXHR?responseText
|> Json.Parse
{
ErrorType = error?error
Reason = error?reason
} |> pushError |> ok
)
)
match data with
Some data ->
settings.Data <- data
| None -> ()
JQuery.Ajax(settings) |> ignore
with e ->
async {
return {
ErrorType ="uncaught exception";
Reason = e.Message
} |> Error
}
1 ответ
Оказывается, решение довольно простое. После создания объекта AjaxSetting просто используйте динамическую типизацию, чтобы добавить объект xhrFields
settings?xhrFields <- obj()
settings?xhrFields?withCredentials <- true