1

Cross-Origin Request Blocked に関する多くの投稿を見たり読んだりしましたが、どれもあまり意味がありません。

Amazon Pay を Sitecore/MVC サイトに統合していますが、すべてうまくいきました。ただし、ボタンをレンダリングしているページでエラーが発生し始めました。Chrome または Firefox で開発者ツールを開いてページを読み込むと、次のように赤く表示されます。

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

に続く:

Cross-Origin Request Blocked: Same Origin ポリシーにより、 https://payments-uk-sandbox.amazon.com/merchantAccount/AAAJJFJJJFJJF/accountStatus?countryOfEstablishment=UK&ledgerCurrency=GBPでのリモート リソースの読み取りが禁止されています。(理由: CORS ヘッダー 'Access-Control-Allow-Origin' がありません)。

私が読んでいることと、それを理解している方法から、問題はAmazon側にあります. 昨日このエラーが発生せず、ページのコードを変更していないため、これは理にかなっています。

私にこの権利があるかどうか誰か教えてもらえますか? 何か私にできることはありますか?Amazon にはインテグレーションの担当者がいますが、最後の質問に回答するのに 6 日かかりました。

4

1 に答える 1

1

これをバックエンドから呼び出し、必要に応じてフロントエンドで表示する必要があります。CORS が登場したのは、Amazon がセキュリティ上の問題により、別のサイトのフロントエンドでこのメソッドを使用することを許可していないためです。

必要な作業: Amazon への Web リクエストを作成し、いくつかの情報を返す Web サイト メソッドを作成する必要があります。このメソッドを js から呼び出す必要があります。

ここに例:

コントローラーにメソッドを作成する

    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;
    }
}

ボタンをクリックしてjsからサイトへのリクエストを作成するよりも

$.ajax({method: "GET",url: "/home/GetAccountStatus"}).done(function( msg ) {
alert( "Data received: " + msg );});
于 2017-06-28T16:52:13.650 に答える