web-dev-qa-db-ja.com

Github(raw.github.com)からファイルを直接リンクする方法

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で許可されています。このように、ローカルファイルの更新について心配する必要はありません。

52
anjanesh

もちろん、なぜですか?誰かがgitで履歴を変更し、Pushを強制しない限り、更新の保存ですらあります。

0
three

素晴らしいサービスRawGitについてはすでに言及しましたが、別のリングに追加します。 GitCDN.link

利点:

  • 特定のコミットにリンクできるほか、最新の(マスター)を自動取得できます。
  • 交通量が多いことによる損害はありません。 RawGitは、dev.rawgit.comのリンクは開発中にのみ使用することを要求します。GitCDNでは、サーバーが爆発する危険なしに最新バージョンにアクセスできます。
  • HTML、CSS、およびJavaScriptを自動縮小するか、書面で提供するかを選択できます( https://min.gitcdn.link )。
  • 圧縮を追加します(GZip)
  • すべての正しいヘッダー(Content-Type、cache-control、e-tagなど)を追加します

完全な開示、私は GitCDN.link のプロジェクトメンテナーです

47
Shane Gadsby

外部サーバーを使用できますrawgithub.com。 「raw」と「github」の間にあるドットを削除するだけです https://raw.github.com/ .. => https://rawgithub.com/ とこれを使って。 この質問で見つけた詳細情報

ただし、rawgithub Webサイトによると、2019年10月末に閉鎖されます。

41
AuthorProxy

次の手順を実行する必要があります

  1. Githubからファイルの未加工のURLを取得します。 https://raw.githubusercontent.com/username/folder/example.css のようなものです

  2. http://rawgit.com/ にアクセスします。上記のgit urlを入力ボックスに貼り付けます。開発用と本番用の2つのURLを生成します。

  3. それらのいずれかをコピーすれば完了です。

ファイルはCDNとして機能します。 Gist URLを使用することもできます。

13
Nitesh

Rawファイルに直接リンクできますが、rawファイルは常にプレーン/テキストヘッダーで送信され、読み込みの問題が発生する可能性があるため、リンクしないことをお勧めします。

12
Benjamin Intal

「gh-pages」という名前を使用してプロジェクトにブランチを追加すると、(分岐直後に) https://username.github.io/project/master/などの直接URLを使用できるようになります。 style.css (URLを使用し、「style.css」が「プロジェクト」リポジトリのルートにある「マスター」フォルダー内のファイルであり、Githubアカウントが「ユーザー名」であると想定しています)。

7
Jeff Warren

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サーバーに直接ヒットし、サーバーの負荷が増加します。

1
Sista Fiolen

この同じ機能を検索した後、プロキシとして機能する独自のPHPスクリプトを作成することになりました。 GithubからRAWバージョン/リンクを取得して自分のページでリンクした場合でも、送信されたヘッダーは 'text/plain'で、ChromeJavaScriptから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タイプに変更できるからです。

0