Githubから直接ファイルをリンクできますか?
<link rel="stylesheet" href="https://raw.github.com/username/project/master/style.css"/>
<script src="https://raw.github.com/username/project/master/script.js"></script>
これはGoogle Codeで許可されています。このように、ローカルファイルの更新について心配する必要はありません。
もちろん、なぜですか?誰かがgitで履歴を変更し、Pushを強制しない限り、更新の保存ですらあります。
素晴らしいサービスRawGitについてはすでに言及しましたが、別のリングに追加します。 GitCDN.link
利点:
完全な開示、私は GitCDN.link のプロジェクトメンテナーです
外部サーバーを使用できますrawgithub.com
。 「raw」と「github」の間にあるドットを削除するだけです https://raw.github.com/ .. => https://rawgithub.com/ とこれを使って。 この質問で見つけた詳細情報
ただし、rawgithub Webサイトによると、2019年10月末に閉鎖されます。
次の手順を実行する必要があります
Githubからファイルの未加工のURLを取得します。 https://raw.githubusercontent.com/username/folder/example.css のようなものです
http://rawgit.com/ にアクセスします。上記のgit urlを入力ボックスに貼り付けます。開発用と本番用の2つのURLを生成します。
それらのいずれかをコピーすれば完了です。
ファイルはCDNとして機能します。 Gist URLを使用することもできます。
Rawファイルに直接リンクできますが、rawファイルは常にプレーン/テキストヘッダーで送信され、読み込みの問題が発生する可能性があるため、リンクしないことをお勧めします。
「gh-pages」という名前を使用してプロジェクトにブランチを追加すると、(分岐直後に) https://username.github.io/project/master/などの直接URLを使用できるようになります。 style.css (URLを使用し、「style.css」が「プロジェクト」リポジトリのルートにある「マスター」フォルダー内のファイルであり、Githubアカウントが「ユーザー名」であると想定しています)。
GitHubページ:https://yourusername.github.io/script.js
GitHubリポジトリrawファイル:https://github.com/yourusername/yourusername.github.io/blob/master/script.js
GitHubページを使用、しない生ファイルを使用します。
理由:GitHubページはCDNに基づいていますが、rawファイルはそうではありません。生ファイルにアクセスすると、GitHubサーバーに直接ヒットし、サーバーの負荷が増加します。
この同じ機能を検索した後、プロキシとして機能する独自のPHP
スクリプトを作成することになりました。 Github
からRAWバージョン/リンクを取得して自分のページでリンクした場合でも、送信されたヘッダーは 'text/plain'で、Chrome
はJavaScript
からGithub
ファイルを実行していません。また、明らかなセキュリティ/改ざんの問題の可能性があるため、サードパーティのサービスを使用するために投稿された他のリンクも好きではありませんでした。
そのため、このスクリプトを使用して、Github
からRAWリンクを渡し、スクリプトに正しいヘッダーを設定して、ファイルを自分のサーバーから来ているかのように出力できます。このスクリプトを安全なアプリケーションで使用して、「安全でないリンクが使用されました」というSSL
エラー警告をスローすることなく、安全でないスクリプトを取り込むこともできます。
リンク:
<script src = "proxy.php?link = https://raw.githubusercontent.com/UserName/repo/master/my_script.js "> </ script>
proxy.php
<?php
###################################################################################################################
#
# This script can take two URL variables
#
# "type"
# OPTIONAL
# STRING
# Sets the type of file that is output
#
# "link"
# REQUIRED
# STRING
# The link to grab and output through this proxy script
#
###################################################################################################################
# First we need to set the headers for the output file
# So check to see if the type is specified first and if so, then set according to what is being requested
if(isset($_GET['type']) && $_GET['type'] != ''){
switch($_GET['type']){
case 'css':
header('Content-Type: text/css');
break;
case 'js':
header('Content-Type: text/javascript');
break;
case 'json':
header('Content-Type: application/json');
break;
case 'rss':
header('Content-Type: application/rss+xml; charset=ISO-8859-1');
break;
case 'xml':
header('Content-Type: text/xml');
break;
default:
header('Content-Type: text/plain');
break;
}
# Otherwise, try and determine what file type should be output by the file extension from the link
}else{
# See if we can find a file type in the link specified and set the headers accordingly
# If css file extension is found, then set the headers to css format
if(strstr($_GET['link'], '.css') != FALSE){
header('Content-Type: text/css');
# If javascript file extension is found, then set the headers to javascript format
}elseif(strstr($_GET['link'], '.js') != FALSE){
header('Content-Type: text/javascript');
# If json file extension is found, then set the headers to json format
}elseif(strstr($_GET['link'], '.json') != FALSE){
header('Content-Type: application/json');
# If rss file extension is found, then set the headers to rss format
}elseif(strstr($_GET['link'], '.rss') != FALSE){
header('Content-Type: application/rss+xml; charset=ISO-8859-1');
# If css xml extension is found, then set the headers to xml format
}elseif(strstr($_GET['link'], '.xml') != FALSE){
header('Content-Type: text/xml');
# If we still haven't found a suitable file extension, then just set the headers to plain text format
}else{
header('Content-Type: text/plain');
}
}
# Now get the contents of our page we're wanting
$contents = file_get_contents($_GET['link']);
# And finally, spit everything out
echo $contents;
?>
ウェブサーバーにアクティブなallow_url_includeがある場合、ファイルを生のプレーン/テキストとして提供するGitHubは問題ありません。最初にファイルをPHPスクリプトに含め、ヘッダーを適切なMIMEタイプに変更できるからです。