Нет такой вещи как "строка" в C. В C строки являются одномерным массивом char
, завершенный нулевым символом \0
. Так как Вы не можете присвоить массивы в C, Вы не можете присвоить строки также. Литерал "привет" является синтаксическим сахаром для const char x[] = {'h','e','l','l','o','\0'};
, корректный путь был бы:
char s[100];
strncpy(s, "hello", 100);
или еще лучше:
#define STRMAX 100
char s[STRMAX];
size_t len;
len = strncpy(s, "hello", STRMAX);
Вы можете добавлять поля заголовка только в ответы на запросы, которые отправляются на ваш собственный сервер. Если запрос идет на другой сервер, скажем, на сервер Google, то это сервер Google, который отвечает на запрос.
Итак, единственное решение вашей проблемы - разместить эти внешние ресурсы на вашем собственном сервере. Но это возможно только в том случае, если эти ресурсы статичны, не меняются от запроса к запросу и не зависят от других факторов.
Единственный способ - создать скрипт, который загружает содержимое с внешнего сайта и затем добавляет необходимые заголовки.
<script type="text/javascript" src="http://external.example.com/foo.js"></script>
К
<script type="text/javascript" src="external.php?url=http://external.example.com/foo.js"></script>
А external.php - это что-то вроде
<?php
header("Expire-stuff: something");
echo file_get_contents($_GET['url']);
Конечно, это имеет дыра в безопасности, поэтому я бы рекомендовал использовать строки идентификаторов, такие как external.php? file = foo.js, а затем использование
$files = array('foo.js' => 'http://external/...');
if(isset($files[$_GET['file']]))
{
echo file_get_contents($files[$_GET['file']]);
}
file_get_contents (), конечно, потребует некоторой части вашей пропускной способности, поэтому рекомендуется также кэшировать результат.
Это невозможно.
Не рекомендуется (и не всегда возможно): если это статическое содержимое, предварительно загрузите его с помощью сценария и установите свои собственные заголовки.
Вы можете динамически загружать внешние страницы с помощью PHP, так что вы можете отправлять заголовки перед выводом исходных данных. Это не идеальное решение, но если вам действительно нужно, вы можете его использовать.
<?php
header('expire-header');
echo file_get_contents('http://www.extern.al/website/url');
Вы не можете.
Попробуйте отправить электронное письмо тем, кто размещает файл, и попытайтесь заставить их применить к нему expires-headers.
Вы можете добавить параметр строки запроса, чтобы заставить браузер думать, что он запрашивает другой ресурс. Например, если вы хотите, чтобы браузер никогда не кэшировал CSS, вы можете добавить вопросительный знак, за которым следует случайное число, в конце URL-адреса. Обычно это работает, но может быть отключено сервером, на котором размещен файл. Попробуйте и убедитесь.