1

Ich habe viele Posts auf Cross-Origin-Anfrage blockiert und gesichtet gelesen, aber keine von ihnen macht für mich viel Sinn.Amazon Pay - Cross-Origin-Anfrage blockiert

Ich integriere Amazon Pay in eine Sitecore/MVC-Site und alles lief gut. Aber auf der Seite rende ich die Schaltfläche Ich habe begonnen, einen Fehler zu sehen. Wenn ich die Entwickler-Tools öffnen entweder in Chrome Firefox und dann laden Sie die Seite, die ich sehen, das ist rot:

https://payments-uk-sandbox.amazon.com/merchantAc...tus?countryOfEstablishment=UK&ledgerCurrency=GBP 200 OK 66 ms Widgets.js GET (Linie 43)

Gefolgt von :

Cross-Origin-Anforderung blockiert: die Same Origin Policy nicht zulässt die Remote-Ressource bei https://payments-uk-sandbox.amazon.com/merchantAccount/AAAJJFJJJFJJF/accountStatus?countryOfEstablishment=UK&ledgerCurrency=GBP zu lesen. (Grund: CORS-Header 'Access-Control-Allow-Origin' fehlt).

Von was ich lese und die Art, wie ich es verstehe, ist das Problem auf der Seite von Amazon. Das würde Sinn machen, da ich diesen Fehler gestern nicht bekommen habe und ich keinen Code auf meiner Seite geändert habe.

Kann mir jemand sagen, ob ich das richtig gemacht habe? Kann ich irgendetwas tun? Ich habe einen Integrations-Kontakt bei Amazon, aber sie haben 6 Tage gebraucht, um die letzte Frage zu beantworten, die ich hatte, also halte ich nicht lange die Luft für eine Antwort.

Antwort

1

Sie sollten dies vom Backend aus aufrufen und bei Bedarf im Frontend anzeigen. CORS erschien, weil Amazon diese Methode wegen eines Sicherheitsproblems nicht im Frontend einer anderen Site verwenden kann.

Was tun müssen, um: Sie müssen in Ihre Website-Methode erstellen, die Web-requrest zu amazon schafft und einige Informationen zurückzukehren, und Sie sollten diese Methode von js

hier Beispiel nennen:

Methode erstellen in Controller

public class HomeController : Controller 
{ 

    public ActionResult GetAccountStatus() 
    { 
     var client = new WebClient(); 
     client.Encoding = Encoding.UTF8; 

     var response = client.DownloadString("https://payments-uk-sandbox.amazon.com/merchantAccount/AAAJJFJJJFJJF/accountStatus?countryOfEstablishment=UK&ledgerCurrency=GBP"); 

     return response; 
    } 
} 

als von js auf die Schaltfläche klicken erstellen Anfrage auf Ihre Website

$.ajax({method: "GET",url: "/home/GetAccountStatus"}).done(function(msg) { 
alert("Data received: " + msg);}); 
+0

Möchten Sie das etwas besser erklären? – Fred

+0

Benötigen Sie weitere Informationen? – itikhomi

+0

Der Code, den ich verwende, kam direkt vom Amazon-Integrationsteam und arbeitete bis gestern ohne Probleme. – Fred