web-dev-qa-db-fra.com

En-tête Autoriser l'origine source du contrôle d'accès AMP

Échec du chargement de la ressource: le serveur a indiqué l'état 500 (Erreur interne du serveur) Cdn.ampproject.org/v0.js:68 La réponse doit contenir l'en-tête AMP-Access-Control-Allow-Source-Origin Yd @ cdn.ampproject.org/v0.js:68cdn.ampproject.org/v0.js:68 La soumission du formulaire a échoué: Erreur: la réponse doit contenir l'en-tête AMP-Access-Control-Allow-Source-Origin Rapporté

 enter image description here

Comment pouvons-nous nous assurer qu'il fonctionne correctement?.

Appliqué toutes les balises . https://github.com/ampproject/amphtml/blob/master/spec/amp-cors-requests.md

5
Asim Khan

Veuillez essayer avec le code suivant

if(!empty($_POST)){
        $domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_Host]";
        header("Content-type: application/json");
        header("Access-Control-Allow-Credentials: true");
        header("Access-Control-Allow-Origin: ". str_replace('.', '-','https://example.com') .".cdn.ampproject.org");
        header("AMP-Access-Control-Allow-Source-Origin: " . $domain_url);
        header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
        header("AMP-Redirect-To: https://example.com/thankyou.amp.html");
        header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin"); 
        echo json_encode(array('successmsg'=>'data post'));
        exit;
}

Veuillez vous assurer que l'URL du domaine doit être https

Remplacez https://example.com/ par votre URL souhaitée 

7
Bachcha Singh

Bien que l'OP utilise PHP, je poste ici pour mes peeps javascript.

Pour node express server, vous pouvez utiliser amp-toolbox-cors , qui fournit le middleware.

const express = require('express');
const ampCors = require('amp-toolbox-cors');

const app = express();

// That's it!
app.use(ampCors());
...

Par défaut, le middleware AMP CORS n'autorise que les requêtes des caches AMP répertoriés sur https://cdn.ampproject.org/caches.json (avec l'ajout de bing-amp.com). 

Toutes les autres origines recevront une réponse 403.

Donc, pour localhost ou dev test, vous voudrez probablement aussi ajouter ce qui suit:

app.use(ampCors({
  verifyOrigin: false
}));

Pour ceux qui souhaitent approfondir leurs connaissances, voici un lien vers les documents officiels sur la manière de se conformer à AMP CORS .

0
Truchainz