Как может я добавлять истечь заголовки для сценариев, которые не находятся на моем сервере?

Нет такой вещи как "строка" в 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);
20
задан DanTdr 27 March 2018 в 08:55
поделиться

6 ответов

Вы можете добавлять поля заголовка только в ответы на запросы, которые отправляются на ваш собственный сервер. Если запрос идет на другой сервер, скажем, на сервер Google, то это сервер Google, который отвечает на запрос.

Итак, единственное решение вашей проблемы - разместить эти внешние ресурсы на вашем собственном сервере. Но это возможно только в том случае, если эти ресурсы статичны, не меняются от запроса к запросу и не зависят от других факторов.

21
ответ дан 30 November 2019 в 00:19
поделиться

Единственный способ - создать скрипт, который загружает содержимое с внешнего сайта и затем добавляет необходимые заголовки.

<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 (), конечно, потребует некоторой части вашей пропускной способности, поэтому рекомендуется также кэшировать результат.

20
ответ дан 30 November 2019 в 00:19
поделиться

Это невозможно.

Не рекомендуется (и не всегда возможно): если это статическое содержимое, предварительно загрузите его с помощью сценария и установите свои собственные заголовки.

2
ответ дан 30 November 2019 в 00:19
поделиться

Вы можете динамически загружать внешние страницы с помощью PHP, так что вы можете отправлять заголовки перед выводом исходных данных. Это не идеальное решение, но если вам действительно нужно, вы можете его использовать.

<?php
header('expire-header');

echo file_get_contents('http://www.extern.al/website/url');
2
ответ дан 30 November 2019 в 00:19
поделиться

Вы не можете.

Попробуйте отправить электронное письмо тем, кто размещает файл, и попытайтесь заставить их применить к нему expires-headers.

0
ответ дан 30 November 2019 в 00:19
поделиться

Вы можете добавить параметр строки запроса, чтобы заставить браузер думать, что он запрашивает другой ресурс. Например, если вы хотите, чтобы браузер никогда не кэшировал CSS, вы можете добавить вопросительный знак, за которым следует случайное число, в конце URL-адреса. Обычно это работает, но может быть отключено сервером, на котором размещен файл. Попробуйте и убедитесь.

-9
ответ дан 30 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: