【问题标题】:Javascript access forbidden on server服务器上禁止 Javascript 访问
【发布时间】:2015-12-14 19:09:02
【问题描述】:

我真的被这个卡住了,我的代码在 Localhost 上运行良好,但在 Fasthosts 服务器上却不行,这似乎是对服务器上文件夹的某种访问问题,这里是调试消息。

GET (http://reggarockaboogie.co.uk/images/gallery/fld01/) 403 (Forbidden)

k.cors.a.crossDomain.send @ jquery.min.js:4
n.extend.ajax             @ jquery.min.js:4
LoadGallery               @ gallery.html:95
(anonymous function)      @ gallery.html:86
j                         @ jquery.min.js:2
k.fireWith                @ jquery.min.js:2 
n.extend.ready            @ jquery.min.js:2
I                         @ jquery.min.js:2

这是我的代码,

     < script >
      $(document).ready(function() {
        LoadGallery($('a[data-albumid]:first').data('albumid'));
        $("a").click(function() {
          var dir_path = $(this).data("albumid");
          LoadGallery(dir_path);
          return false;
        });
      });

    function LoadGallery(dir_path) {
      $.ajax({
        url: dir_path,
        success: function(data) {

          $(".image-container").empty();

          $(data).find("a:contains(.jpg), a:contains(.png), a:contains(.jpeg)").each(function() {
            this.href.replace(window.location.host, "").replace("http:///", "");
            var file = dir_path + $(this).text();
            $(".image-container").append($("<a href='javascript:;' class='thumb' data-src='" + file + "'><img src='" + file + "' title='Click to        enlarge' alt='#'/></a>"));

            if ($(".image-container").children("a").length === 30) {
              return false;
            }
          });

          $(".image-container").append("<strong><p>Click on a thumb nail to show a larger image.</p></strong>");

          $(".thumb").bind('click', function() {
            var Popup = "<div class='bg'></div>" + "<div class='wrapper'><img src='<img src=''/>" + "<label href='javascript:;' class='prev-image'>«</label><label href='javascript:;' class='next-image'>»</label><a href='javascript:;' class='close' title='Close'>Close</a>";
            var Img = $(this).attr("data-src");
            $("body").prepend(Popup);
            $(".bg").height($(window).height() * 4);
            $(".wrapper img").attr("src", Img);

            $(".prev-image").bind('click', function() {
              var prev = $(".image-container").find("img[src='" + Img + "']").parent().prev('a').find("img").attr('src');
              if (!prev || prev.length === 0)
                return false;
              else {
                $(".wrapper img").attr("src", prev);
                Img = prev;
              }
            });

            $(".next-image").bind('click', function() {
              var next = $(".image-container").find("img[src='" + Img + "']").parent().next('a').find("img").attr('src');
              if (!next || next.length === 0)
                return false;
              else {
                $(".wrapper img").attr("src", next);
                Img = next;
              }
            });

            $(".close").bind('click', function() {
              $(this).siblings("img").attr("src", "")
                .closest(".wrapper").remove();
              $(".bg").remove();
            });
          });
        }
      });
    }; < /script>
@import url(http://fonts.googleapis.com/css?family=Varela+Round);

#nav {
    float: left;
    width: 20px;
    margin: 10px 10px 20px 0px;
}
#nav, #nav ul {
    list-style: none;
    padding: 0;
}
#nav a {
    position: relative;
    display: block;
    width: 105px;
    padding-left: 10px;
    margin: 3px 0;
    text-decoration: none;
    font-family: Geneva, Arial, Helvetica, sans-serif;
    font-variant: small-caps;
    font-weight: bold;
    color: #fff;
}
#nav a:link, #nav a:visited {
    border-left: #00425E solid 10px;
    color: #fff;
}
#nav a:hover, #nav a:active {
    border-left-color: #fff;
    background-color: #770709;
    color: #fff;
}
#nav a#here {
    border-left-color: #fff;
    background-color: transparent;
    color: #fff;
}
#nav ul {
    margin-left: 20px;
}
#nav ul a {
    width: 50px;
    color: #fff;
}
.image-container {
   padding-top: 50px;
}
.image-container img {
    background-color: white;
    border: 4px solid #444;
    box-shadow: 0 0 5px #222;
    padding: 3px;
    margin-top: 10px;
    height: auto;
    width: auto;
    max-width: 100px;
    max-height: 100px;
    transition: all .7s ease-in-out;
}
.image-container img:hover {
    border: 4px solid #888;
    cursor: zoom-in;
}
.bg {
    background-color: #333;
    filter: alpha(opacity=70);
    left: 0;
    opacity: 0.7;
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 1000;
}
.wrapper {
    background-color: white;
    border: 3px solid #444;
    box-shadow: 0 0 5px #222;
    padding: 3px;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1001;
}
.wrapper .next-image {
    position: absolute;
    font-size: 2.8em;
    top: 50%;
    color: #999;
    width: 45px;
    line-height: 30px;
    text-align: center;
    height: 45px;
    border-radius: 100%;
    opacity: 0.7;
    filter: alpha(opacity=40); /* For IE8 and earlier */
    right: 10px;
    left: auto;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
.wrapper .prev-image {
    position: absolute;
    font-size: 2.8em;
    top: 50%;
    color: #999;
    width: 45px;
    line-height: 30px;
    text-align: center;
    height: 45px;
    border-radius: 100%;
    opacity: 0.7;
    filter: alpha(opacity=40); /* For IE8 and earlier */
    left: 10px;
    right: auto;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
.wrapper .prev-image:hover {
    border: 2px solid #ccc;
    cursor: pointer;
    opacity: 1;
}
.wrapper .next-image:hover {
    border: 2px solid #ccc;
    cursor: pointer;
    opacity: 1;
}
.close {
    background: transparent url(../gallery/close.png) no-repeat;
    height: 32px;
    position: absolute;
    right: -16px;
    text-indent: -9999px;
    top: -16px;
    width: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1 /jquery.min.js"></script>
<div id="content-container" style="height: 600px;">
  <div id="content" style="height: 600px;">
    <div style="float: left; width: 200px;">
      <h1> <span>The Gallery</span> </h1>
      <ul id="nav">
        <li><a href="" id="here">Gallery</a>
          <ul>
            <li><a href="#" data-albumid="images/gallery/fld01/">2014</a>
            </li>
            <li><a href="#" data-albumid="images/gallery/fld02/">2014</a>
            </li>
            <li><a href="#" data-albumid="images/gallery/fld03/">2014</a>
            </li>
            <li><a href="#" data-albumid="images/gallery/fld04/">2015</a>
            </li>
            <li><a href="#" data-albumid="images/gallery/fld05/">2015</a>
            </li>
          </ul>
        </li>
        <li><a href="../index.html">Back to home</a>
        </li>
      </ul>
    </div>
    <div class="image-container">
      <strong><p>Select a menu option to display a list of thumb nails.</p></strong>
    </div>
    <!-- Script goes here -->

    <div class="clear"></div>
  </div>
</div>

【问题讨论】:

  • 只需按照以下说明操作:enable-cors.org/server_apache.html
  • @Hackerman — 这是一个 403 Forbidden,而不是缺少访问控制允许源头。
  • @Quentin,哎呀,我的错!!
  • 老实说不确定是什么,我会试着整理一下,谢谢你的帮助。
  • 已经与快速主机交谈了大约 4 次,现在他们告诉我我必须制作一个重定向脚本来解决这个问题,有人能指出我正确的方向吗,因为我不知道,谢谢。

标签: javascript jquery html css ajax


【解决方案1】:

URL 返回 403 错误;这与您的客户端代码完全无关。

最可能的原因是:

  • 自动生成的目录列表被禁用(这需要更改服务器配置,例如对于 Apache:索引 option)。
  • 服务器上的目录设置了文件权限,使得运行 Web 服务器软件的用户无法读取它(通常更改为 chmod

【讨论】:

  • 我可以确认 http://reggarockaboogie.co.uk/images/gallery/fld01/ 在我的机器上给出了一个 403 错误,根本没有涉及任何 JavaScript - 他们的服务器可能配置为像 Quentin 所说的那样限制该 URL。
  • 我在 Fasthost 与他们联系过,他们说服务器是预先配置的,他们无法更改它们,然后他们说是我的网站有问题,我要疯了因为我一个星期以来一直在尝试对此进行排序。
  • 我在文件和目录上使用了 CMOD,但没有任何区别。
  • “他们不能改变”和“这是你网站的错”是相互排斥的陈述。他们似乎没有很好的技术支持。假设无法更改配置,您有三个基本选项(1)更改主机(2)更改您的代码,因此您不需要目录列表(3)用他们支持的语言编写您自己的服务器端代码(I' d 使用 Perl,但我敢打赌它们只支持 PHP)生成该 URL 的目录列表。
  • 你能告诉我应该问他们什么,因为我对服务器一无所知,谢谢
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2014-06-07
  • 2018-08-06
  • 1970-01-01
相关资源
最近更新 更多