60

注意を払う!

この変更、Githubから直接Githubスクリプトを含めることはできません

X-Content-Type-Options: nosniffホットリンクと戦うための最初のステップとして、2011年に生のURL応答にヘッダーを追加しました。Content-Typeこれには、ブラウザにヘッダーに従ってコンテンツを処理させる効果があります。つまりContent-Type: text/plain、ファイルのrawビューを設定すると、ブラウザーはそのファイルをJavaScriptまたはCSSとして扱うことを拒否します。

しかし、代替手段があります。この質問に対する私の答えを確認してください。


テスト用にGitHubのJavaScriptファイルをローカルのHTMLファイルに含めようとしています(インターネットで見つかった画像のように:) <img src="http://...">

私はこのようなものが欲しいです:

<script src="https://github.com/[username]/[repository]/blob/master/public/[fileName].js"></script>

問題は、これが機能しないことです。

これどうやってするの?

4

9 に答える 9

54

次のようなURLでそれを行うことができます:

https://rawgit.com/h5bp/html5-boilerplate/master/src/js/plugins.js

これは、GitHub内の「raw」ボタンをクリックすることと同じではないことに注意してください。そのボタンもファイルのクリーンバージョンを提供しますが、間違ったヘッダーで送信されます。


警告の言葉; ファイルはGitHubから提供されていませんrawgit.comドメインを介してリダイレクトされています。https://rawgit.comに記載されているように:

おい!rawgit.comは楽しみのためだけのものであり、GitHubとは一切関係ありません。

そのドメインの所有者がトラフィックを制御し、適切と思われるようにトラフィックを操作できるようになったことを覚えておいてください。

于 2012-12-25T19:11:04.947 に答える
9

リポジトリのGitHubページを有効にした後、次のリンクを使用します。

<script src="https://[username].github.io/[repository]/[filename].js"></script>
于 2019-08-09T15:10:31.400 に答える
7

rawgitは2019年末までにシャットダウンするようですが、

適切なContent-Typeヘッダーを使用してコンテンツを配信するためのいくつかのオプション。

  1. https://raw.githack.com/、https://combinatronics.com =>正確な代替手段ですが、ここでcorsが有効になっているため、クライアント側のjavascriptからのフェッチには使用できません。
  2. jsdelivr=>javascriptファイルを配信するため
于 2019-02-16T15:53:09.487 に答える
4

ホストされているCSSHTMLJSファイルをGITHUBPAGESに含めることができます

githubリポジトリの設定をクリックし、このタブでGitHub Pagesまでスクロールダウンして、ドロップダウンで選択します。

その後、HOrayはライブでアクセスできるようになりました

これは、text /plainmimeタイプを返すrawです。

https://raw.githubusercontent.com/bdalina54/bdalina54.github.io/master/assets/js/terebra/acrior.js

<script src="https://raw.githubusercontent.com/bdalina54/bdalina54.github.io/master/assets/js/terebra/acrior.js"></script>

そしてこれはライブバージョンです

https://bdalina54.github.io/assets/js/terebra/acrior.js

<script src="https://bdalina54.github.io/assets/js/terebra/acrior.js"></script>

あなたは私のスクリーンショットを私がどのようにしたかをチェックすることができます

https://prnt.sc/obbrpn

https://prnt.sc/obbt69

https://prnt.sc/obbskb

于 2019-07-06T08:56:38.300 に答える
3

これは機能するはずです:

<script src="https://raw.github.com/[username]/[repository]/[branch]/[filename].js"></script>

githubで必要なアドレスにリダイレクトする方法は次のとおりです。

ここに画像の説明を入力してください

于 2012-12-25T19:13:45.567 に答える
2

更新された回答:

2014年に私が出した古い回答は機能しなくなりましたが、サードパーティのCDNを使用してgithubから直接jsを提供できます。Jsdelivrは、CloudFlareとFastlyを搭載したCDNの1つです。

例:

<script src="https://cdn.jsdelivr.net/gh/<user>/<repo>/<filename>.js">

または、ツールを使用して変換します:https ://www.jsdelivr.com/github

古い答え:

これは、githubの最近の変更でも機能します。

<script>
  $.getScript("https://raw.github.com/username/repo/master/src/script.js");
</script>

PS。jQueryが必要です。

于 2014-12-26T07:32:15.713 に答える
0

このような何かを試してみてください:

<html>
<head>
    <script src="https://raw.github.com/e0ne/BlogSamples/master/ModalDialog/AdvancedPopup/jquery.min.js"></script>
</head>

それは私のために働いています

于 2012-12-25T19:15:00.210 に答える
0

GitHubが提供するAPIを使用してすべてのコンテキストを取得し、同様のメソッドを使用しevalて強制的に書き込むことができます。

公式製品でこの方法を使用することはお勧めしませんが、テストとして、またはいくつかの練習用スクリプトを作成すると、コードの重複を大幅に節約できます。


ドキュメントGitHubAPIはコンテンツを取得します

スクリプトと例

ファイルを入力にドラッグできるコンポーネントを作成します。

https://api.github.com/repos/ CarsonSlovoka ​​/ excel /contents/ app / urls / static / js / pkg / input / ask-file.js?ref = d625296

以下に、コンテンツをロードして、使用できるように埋め込む方法を示します。

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
      integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
      integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ=="
      crossorigin="anonymous" referrerpolicy="no-referrer"/>
<!--  Above CSS are not must be given, I want it more pretty, that all. -->

<input data-com="ask-file" placeholder="select or drag the file to attach" multiple>    

<script type="module">
  function GithubExplorer() {

    /**
     * @param {string} owner Username
     * @param {string} repo repository name
     * @param {string} path filepath
     * @param {string} branch  branch name or SHA1
     * @param {string} token The token is used for project private. generate new token  https://github.com/settings/tokens
     * */
    this.Query = async (owner, repo, path, {branch = "master", token = undefined}) => {
      // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#supplying_request_options
      const url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}?ref=${branch}`
      const headers = {
        accept: "application/vnd.github.v3.raw",
      }
      if (token) {
        headers["authorization"] = `token ${token}`
      }
      const response = await fetch(url, {
        method: 'GET',
        headers,
      })
      if (!response.ok) {
        const errMsg = await response.text()
        throw Error(`${response.statusText} (${response.status}) | ${errMsg} `)
      }
      return await response.blob()
    }
  }

  (async () => {
    const github = new GithubExplorer()
    const blobAskFileScript = await github.Query("CarsonSlovoka", "excel", "app/urls/static/js/pkg/input/ask-file.js", {branch: "d625296"})
    let askFileScriptText = await blobAskFileScript.text()
    askFileScriptText = askFileScriptText.replaceAll("export class AskInputFile", "class AskInputFile")
    document.querySelector(`head`).append(
      document.createRange().createContextualFragment(`
      <script>${askFileScriptText}<\/script>`)
    )
    AskInputFile.BuildAll() // This function is from the script.
  })()
</script>


以下は、コンテンツを読み込んだ後に実行する方法を知っている簡単なスクリプトです。

const body = document.querySelector(`body`)
const range = document.createRange()
const content = `<script>console.log("hello world")<\/script>`
const frag = range.createContextualFragment(content)
body.append(frag)

于 2021-09-08T03:13:50.070 に答える
0

2021実用的な解決策組み合わせ論を使用します。

例については、この回答を参照してください。ここに簡単なものをコピーします:

唯一の変更は、次のraw.github.comようになることcombinatronics.comです。

<script
  type="text/javascript"
  src="https://combinatronics.com/username/repo/master/src/file.js"
></script>
于 2021-09-10T10:38:34.553 に答える