50 votes

Demande Ajax HTTP via une page HTTPS

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 ?

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.

1voto

samdd Points 2236

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)

-1voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X