Есть ли какие-либо размещенные версии jQuery с установленным заголовком Access-Control-Allow-Origin: *? - PullRequest
7 голосов
/ 13 апреля 2010

Я недавно работал с jQuery и столкнулся с проблемой, из-за которой я не смог включить ее в скрипт пользователя, потому что XmlHttpRequest использует такую ​​же политику происхождения . После дальнейшего тестирования я обнаружил, что большинство браузеров также поддерживают управление доступом Cross-Origin Resource Sharing , определенное W3C в качестве обходного пути для проблем с той же политикой происхождения. Я проверил это, разместив скрипт jQuery на локальном веб-сервере, который содержал заголовок Access-Control-Allow-Origin: * http, который позволял загружать скрипт с помощью XmlHttpRequest, чтобы его можно было включить в мой пользовательский скрипт. Я хотел бы использовать размещенную версию jQuery при выпуске скрипта, но до сих пор тестирование с помощью таких инструментов, как http://www.seoconsultants.com/tools/headers, я не нашел ни одного сайта, который бы разрешал перекрестный доступ к скрипту jQuery. Вот список, который я тестировал до сих пор:

Существуют ли другие хост-версии jQuery, которые разрешают доступ из разных источников? Я знаю, что jQuery обычно загружается через тег скрипта (иногда динамически создаваемый тег скрипта), но в этом конкретном случае я должен использовать XmlHttpRequest и Eval, чтобы убедиться, что он загружается в нужную область. Google Chrome поддерживает пользовательские сценарии, но не поддерживает @require, что означает, что единственный способ использовать jquery в пользовательском сценарии в Google Chrome - это вставить его в файл .user.js или загрузить и проверить его с помощью запрос XmlHttpRequest. Встраивание - не самое оптимальное решение, и хотя расширения Chrome позволяют включать js-файлы jQuery в расширения, я бы предпочел придерживаться пользовательских сценариев, поскольку они намного проще и могут работать в нескольких браузерах. Я уже отправил заявки обоим командам Google Ajax и jQuery , чтобы разрешить междоменный доступ к CDN, но я предполагаю, что мне просто нужно будет разместить его для себя Теперь.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Amazon Cloudfront позволяет вам установить заголовок Access-Control-Allow-Origin. По сути, если вы сами размещаете jQuery, а затем вставляете CDN Cloudfront перед ним, Cloudfront будет ретранслировать все заголовки, которые вы устанавливаете, обратно клиенту:

your jQuery -> Cloudfront jQuery -> Client Browser
[header set]   [header set]         [header set]

Cloudfront CDN настраивается для каждого пользователя Amazon; недостаток этого в сравнении с размещенными API-интерфейсами Google в том, что посетители, впервые посещающие ваш сайт, не загрузят jQuery, посетив другой сайт (и, следовательно, получат выгоду от кэширования.)

2 голосов
/ 10 августа 2014

Поскольку вы задали этот вопрос, Google CDN добавил эти заголовки в соответствии с запросом. Быстрый GET https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js дает заголовок:

access-control-allow-origin:*

Итак, добавьте тег-скрипт, подобный этому, и все готово:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" crossorigin="anonymous" type="text/javascript"></script>
2 голосов
/ 19 сентября 2011

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

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

...