2

問題は、自分のWebサイトに多くの外部ダウンロードリンクがあり、一部のリンクが期限切れになるため、期限切れのリンクを自動的に検出したいということです。

私にとって有効なリンクは、ファイルサーバーの1つを指す直接ファイルダウンロードリンクです。壊れたリンクは、エラーメッセージのある単純なhtmlページにつながります。

私の最初のアイデアは、ダウンロードリンクのhtmlソースコードを取得して、エラーが含まれているかどうかを確認することでしたが、機能しませんでした。javascriptも試しましたが、問題はjsが外部リンクを処理しないことです。

何か案は??どうもありがとう

4

3 に答える 3

2

クライアントに作業を任せてもかまわない場合は、javascriptを使用して試してみてください。

開いているページのすべてのリンクを自動的にチェックし、サーバーの応答(見つからない、禁止されているなど)に従ってそれらにマークを付けるgreasemonkeyスクリプトがあります。

あなたがそれからいくつかのアイデアを得ることができるかどうか見てください:http://userscripts.org/scripts/show/77701

クロスドメインポリシーはGM_xmlhttprequestに適用されないことを知っています。また、javascriptソリューションを使用する場合は、次のような回避策を試す必要があります。

サーバー側のソリューションが必要な場合は、上記の回答が役立つと思います。

于 2012-09-30T16:41:37.703 に答える
2

これはフロントエンドのタスクではなく、バックエンドのタスクです。超新星が言ったように、1日1回サーバーからチェックしてください。ブラウザーのセキュリティ ポリシーでは、異なるドメインへの要求が許可されていないため、AJAX 要求は答えになりません。


解決:

わかりました、コメントに基づいて、この解決策を確認してください:

<html>
<head>
  <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
  <script>
    $(document).ready(function(){
      var linksDiv = $('#links');

      $('#generateLinks').click(function(){
        //I don't know your logic for this function, so I'll try to reproduce the same behavior
        var someURLs = ['http://www.google.com','http://www.djfhdkjshjkfjhk.com', 'http://www.yahoo.com'];
        linksDiv.html('');

        for(var i = 0; i < someURLs.length; i++){
          var link = $('<a/>').attr('href', someURLs[i]).append('link ' + i).css('display','block');
          linksDiv.append(link);
        }

      });

      $('#getLinksAndSend').click(function(){
        var links = linksDiv.find('a');

        var gatheredLinks = [];

        $(links).each(function(){
          gatheredLinks.push(this.href);
        });

        sendLinks(gatheredLinks);
      });

      var sendLinks = function(links){
        $.ajax({
          url: "your_url",
          type: "POST",
          data: {
            links: links
          }
        }).done(function(resp) { 
          alert('Ok!')
        });
      }
    });
  </script>
</head>
<body>
  <div id="links">

  </div> 
  <button id="generateLinks">Generate all links</button>
  <button id="getLinksAndSend">Get links and send to validator</button>
</body>
</html>
于 2012-09-30T16:07:56.820 に答える