Felix Riesterer: Wie umgeht z.B. Adsense die CORS-Richtlinie?

Beitrag lesen

Lieber Georg,

der von extern einzubindende Content muss mit passenden HTTP-Headern ausgeliefert werden. Für solche Fälle habe ich diesen PHP-Code:

/**
 * function to send neccessary headers for cross-site AJAX calls
 */
public  function allow_cross_origin_ajax () {
	$t = $this;

	$remove = array(
		'X-Content-Type-Options',
		'X-Frame-Options',
		'X-XSS-Protection',
		'Content-Security-Policy',
		'X-Content-Security-Policy',
		'X-WebKit-CSP'
	);

	$_headers = array();

	foreach ($t->headers as $key => $value) {

		if (!in_array($key, $remove)) {
			$_headers[$key] = $value;
		}
	}

	$t->headers = $_headers;

	header('Access-Control-Allow-Headers: *');
	header('Access-Control-Allow-Methods: GET');
	header('Access-Control-Allow-Origin: *');
	header('Access-Control-Allow-Credentials: true');
}

/**
 * function to send the response data to the browser
 *
 * This method also sends all header data stored in this class.
 */
public  function send_data () {
	$t = $this;

	foreach ($t->headers as $key => $value) {
		header("$key: $value");
	}

	echo $t->content;
}

Die Methoden meines CMS-Objekts verwalten die zu sendenden HTTP-Header, die bei der Auslieferung des tatsächlichen Contents vorher an den Browser geschickt werden. Da ich einige der von Mozillas Observatory empfohlenen Header einsetze, müssen die für solche Fälle wieder verhindert werden, daher die "Aufräumarbeit" in allow_cross_origin_ajax.

Hoffentlich hilft Dir das schon weiter.

Liebe Grüße,

Felix Riesterer.