J'ai un site dont certaines pages sont en connexion HTTPS. À partir de ces pages HTTPS, je dois utiliser une requête Ajax HTTP pour récupérer certaines erreurs comme des champs vides. Mais ces messages d'erreur n'apparaissent pas. Y a-t-il une solution ou dois-je faire cette demande AJAX pour le fichier sur la connexion HTTPS ?
Réponses
Trop de publicités?J'ai créé un module appelé cors-bypass
qui vous permet de faire cela sans avoir besoin d'un serveur. Il utilise postMessage
pour envoyer des événements inter-domaines, qui est utilisé pour fournir des API HTTP fictives ( fetch
, WebSocket
, XMLHTTPRequest
etc.).
Fondamentalement, il fait la même chose que le réponse de Endless mais ne nécessite aucune modification du code pour l'utiliser.
Exemple d'utilisation :
import { Client, WebSocket } from 'cors-bypass'
const client = new Client()
await client.openServerInNewTab({
serverUrl: 'http://random-domain.com/server.html',
adapterUrl: 'https://your-site.com/adapter.html'
})
const ws = new WebSocket('ws://echo.websocket.org')
ws.onopen = () => ws.send('hello')
ws.onmessage = ({ data }) => console.log('received', data)
A partir du javascript j'ai essayé de plusieurs façons et je n'ai pas pu.
Vous avez besoin d'une solution côté serveur, par exemple en c#, j'ai créé un contrôleur qui appelle le http, et désérialise l'objet, et le résultat est que lorsque j'appelle depuis javascript, je fais une requête depuis ma page d'accueil. https://domain à mon htpps://domaine. Veuillez voir mon code c# :
[Authorize]
public class CurrencyServicesController : Controller
{
HttpClient client;
//GET: CurrencyServices/Consultar?url=valores?moedas=USD&alt=json
public async Task<dynamic> Consultar(string url)
{
client = new HttpClient();
client.BaseAddress = new Uri("http://api.promasters.net.br/cotacao/v1/");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
System.Net.Http.HttpResponseMessage response = client.GetAsync(url).Result;
var FromURL = response.Content.ReadAsStringAsync().Result;
return JsonConvert.DeserializeObject(FromURL);
}
Et laissez-moi vous montrer mon côté client (Javascript)
<script async>
$(document).ready(function (data) {
var TheUrl = '@Url.Action("Consultar", "CurrencyServices")?url=valores';
$.getJSON(TheUrl)
.done(function (data) {
$('#DolarQuotation').html(
'$ ' + data.valores.USD.valor.toFixed(2) + ','
);
$('#EuroQuotation').html(
'€ ' + data.valores.EUR.valor.toFixed(2) + ','
);
$('#ARGPesoQuotation').html(
'Ar$ ' + data.valores.ARS.valor.toFixed(2) + ''
);
});
});
Je souhaite que cela vous aide ! Salutations
- Réponses précédentes
- Plus de réponses
0 votes
Ajax devrait fonctionner correctement sur https, pouvez-vous poster votre extrait de code actuel ?
2 votes
Cela ressemble à une SOP ( fr.wikipedia.org/wiki/Same_origin_policy ) : les schémas sont différents, il s'agit donc d'une origine différente.
0 votes
Merci pour la réponse. J'ai modifié mon site web en conséquence.