php cors amp-html

php - Problema con el encabezado de origen de origen del control de acceso AMP



cors amp-html (2)

Aunque OP usa PHP, estoy publicando aquí para mis peeps javascript.

Para el servidor nodo express , puede usar amp-toolbox-cors , que proporciona middleware.

const express = require(''express''); const ampCors = require(''amp-toolbox-cors''); const app = express(); // That''s it! app.use(ampCors()); ...

De manera predeterminada, el middleware AMP CORS solo permitirá solicitudes de cachés AMP enumerados en https://cdn.ampproject.org/caches.json (con la adición de bing-amp.com).

Todos los demás orígenes recibirán una respuesta 403.

Entonces, para las pruebas localhost o de desarrollo, probablemente también deseen agregar lo siguiente:

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

Para aquellos que quieren profundizar, aquí hay un enlace a documentos oficiales sobre cómo cumplir con AMP CORS .

¿Cómo puedo resolver el error a continuación;

Error al cargar el recurso: el servidor respondió con un estado de 500 (Error interno del servidor) cdn.ampproject.org/v0.js:68 La respuesta debe contener el encabezado AMP-Access-Control-Allow-Source-Origin Yd @ cdn.ampproject .org / v0.js: 68 cdn.ampproject.org/v0.js:68 Error al enviar el formulario: Error: la respuesta debe contener el encabezado AMP-Access-Control-Allow-Source-Origin informado

Seguí todas las instrucciones en la página AMP GitHub en CORS .

A continuación se muestra una captura de pantalla de mi código PHP en el lado del servidor y un error en la consola de mi navegador;


Por favor intente con el siguiente código

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

Asegúrese de que la URL del dominio debe ser https

Reemplace https://example.com/ a su url deseada