Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Migi
Tvůrce
Avatar
Migi:31.10.2021 17:52

Ahoj,
chci cist pomoci ajaxu preklad y google translatoru

document.addEventListener("keyup", function (event) {
    if (event.key == 'Enter') {
        $.ajax({
            url: "https://translate.google.com/m?hl=cs&sl=cs&tl=en&ie=UTF-8&prev=_m&q=pes",
            dataType: "xml",
            success: function (data) {
                console.log(data);
                alert("ss");
            },
            error: function (error) {
                console.log('error');
                alert("ss");
            }
        });

    }
});

Narazim na to, ze to je bloknute

Access to XMLHttpRequest at 'https://translate.google.com/m?hl=cs&sl=cs&tl=en&ie=UTF-8&prev=_m&q=pes' from origin 'https://localhost:44312' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Postupu jak to zapnout je mraky, ale nic z toho nefunguje.

Zkusil jsem: https://forums.asp.net/t/2163011.aspx?…

Chci docílit: Snazim se, aby pres ajax mohl pres GET metodu ziskat xml jine stranky na jine domene.

Odpovědět
31.10.2021 17:52
I ta nejhorsi hodina v zivote trva jen 60 minut...
Avatar
Radek Veverka
Tvůrce
Avatar
Odpovídá na Migi
Radek Veverka:1.11.2021 14:40

Jak to souvisí s C#?

Blokuje to prohlížeč, protože server nezasílá v odpovědi potřebnou hlavičku.
O tom, jestli ji zašle, rozhoduje server. Pokud máš svůj server, můžeš ho využít ke stažení dat, připojení hlavičky a odeslání zpět prohlížeči (jako proxy).

 
Nahoru Odpovědět
1.11.2021 14:40
Avatar
Migi
Tvůrce
Avatar
Odpovídá na Radek Veverka
Migi:1.11.2021 15:01

Ahoj,
souvisi to takhle, ASP.net core bezi na C# a problematikou COR. Jelikoz ja nevim co je blbe a vychazel jsem, ze nejspis konfigurace te COR sluzby, tak to je porad ASP.NET a C#.

Zpet k tve odpovedi: takze ja se chci zeptat googlu na preklad, ale ten neposle mi zpet hlavicku, takze to prohlizec zablokuje. Neda se to nejak obejit, treba vypnout tuhle kontrolu?

Diky predem,
M.

Nahoru Odpovědět
1.11.2021 15:01
I ta nejhorsi hodina v zivote trva jen 60 minut...
Avatar
Migi
Tvůrce
Avatar
Odpovídá na Radek Veverka
Migi:1.11.2021 15:04

Jeste me zaujalo toto: server vlastni nemam, mam svou domenu, pujde to taky? server, můžeš ho využít ke stažení dat, připojení hlavičky a odeslání zpět prohlížeči (jako proxy).

Diky

Nahoru Odpovědět
1.11.2021 15:04
I ta nejhorsi hodina v zivote trva jen 60 minut...
Avatar
Radek Veverka
Tvůrce
Avatar
Odpovídá na Migi
Radek Veverka:1.11.2021 16:58

Promiň, ale stále tu souvislost nechápu. Ta první věta mi vůbec nedává smysl, co je to vůbec COR služba?

Vypnout tato kontrola v prohlížeči se samozřejmě dá, ale není to normální a žádný uživatel to tak mít nebude. Je to ryze pro vývoj, v safari to třeba mám pod Develop -> Disable cross origin restrictions, nevím jak je to v chromu a dalších.

Samotná doména je ti k ničemu, nejspíš budeš mít ještě nějaký webhosting, kam nahráváš tu aplikaci. Pokud podporuje alespoň PHP skripty, mohlo by to tam jít udělat.

 
Nahoru Odpovědět
1.11.2021 16:58
Avatar
Migi
Tvůrce
Avatar
Odpovídá na Radek Veverka
Migi:1.11.2021 18:33

To nevadi, COR = Cross-Origin Resource Sharing, ze ti v ASP.NET Core umozni mimo tvou domenu tahat zdroje pomoci jquery. Nevim kde byla chyba, vyresil jsem to to jinak :-)
JS volani

document.addEventListener("keyup", function (event) {
    if (event.key == 'Enter') {
        $.ajax({
            url: "RequestforInformation?Name=test",
            method: "GET",
            success: function (result) {
                console.log(result)
            },
            error: function (err) {
                console.log("Post changed nok")
            }
        });


    }
});

Controller v MVC modelu

public string RequestforInformation(string? Name)
       {
           string requestUrl = "https://translate.google.com/m?hl=cs&sl=cs&tl=en&ie=UTF-8&prev=_m&q=pes";
           WebRequest request = WebRequest.Create(requestUrl);
           WebResponse response = request.GetResponse();

           StreamReader streamReader = new StreamReader(response.GetResponseStream(), true);
           string target = string.Empty;

           target = streamReader.ReadToEnd();
           string charToFind = "<div class=\"result-container\">";
           int intBegin = target.IndexOf(charToFind, 0) + 30;
           int intEnd = target.IndexOf("</div>", intBegin);
           string translate = target.Substring(intBegin, intEnd - intBegin);
           return translate;

       }

A vysledek, umi to vycist z DOMu google translatori stranky preklad, ktery chci :-) zadne API placene, nic :-)

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
1.11.2021 18:33
I ta nejhorsi hodina v zivote trva jen 60 minut...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.