Actually I think this problem is a CORS issue -- In developer tools I am seeing "CORS Missing Allow Origin" --- so I am working on getting past this now...
Consuming REST API from WASM project in Visual Studio 2019
I am using basic authorization to consume third party API from my WASM project. However in developer tools I see HTTP 403 error. I am using my usual way of authenticating and in postman these credentials work. Is basic auth possible in WASM ? My example code technique is here:
@page "/"
@inject HttpClient TestClient
<h3>Presentations Scheduled</h3>
<form>
<fieldset class="form-group">
<div>
<button type="button" class="btn btn-dark mr-sm-2 mb-2"
@onclick=@(async ()=> await GetToday())>
Today
</button>
</div>
</fieldset>
@if (string.IsNullOrWhiteSpace(errorString) == false)
{
<div class="h2">@errorString</div>
}
else
{
<div class="h2">@httpResponse</div>
{
</form>
@code
{
string errorString;
string httpResponse;
private async Task GetToday()
{
var byteArray = Encoding.ASCII.GetBytes("user:pass");
TestClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",Convert.ToBase64String(byteArray));
string todayDate = DateTime.Today.AddDays(0).ToString("yyyyMMdd");
string TestbaseURL = "https://webservices.XXXAPI.com/";
UriBuilder TestURI = new UriBuilder(TestbaseURL);
TestURI.Scheme = "https";
TestURI.Path = "ws/run/reservations.json";
TestURI.Query = "resource_query_id=244782";
var Testquery = HttpUtility.ParseQueryString(TestURI.Query);
Testquery["scope"] = "extended";
Testquery["start_dt"] = todayDate;
Testquery["end_dt"] = todayDate;
TestURI.Query = Testquery.ToString();
TestbaseURL = TestURI.ToString();
try
{
httpResponse = await TestClient.GetStringAsync(TestbaseURL);
errorString = null;
}
catch (Exception ex)
{
errorString = $"There was a problem: {ex.Message}";
}
0 Posted 3 years ago by Bassonette0 Does anyone know how to fix this problem from the client side ?
Posted 3 years ago by Bassonette1 I haven't ran into this problem myself, but you may either need to get the third party API to whitelist your website to get the response to include the right headers (may not have much luck there). A more likely option may be to make a call to your own API that calls the third party API and return the data to your WebAssembly app. That should get you around the CORS issue.
Posted 3 years ago by selliott0 Thanks Selliott. I've since traced this issue down to a CORS prooblem when trying to access third party API's when using a WASM application and found that all requests run from the browser. When I switched my Blazor app over to a server app, the issue resolved as the requests from the API ran from the server endpoint and not in the browser. I am going to consider this closed..
Posted 3 years ago by Bassonette