Javascript 克洛皮得不到';Acces控制允许原点';有时,有时不是

Javascript 克洛皮得不到';Acces控制允许原点';有时,有时不是,javascript,jquery,html,css,cross-domain,Javascript,Jquery,Html,Css,Cross Domain,我正在使用croppie库来帮助我裁剪图片。然而,奇怪的是,有时裁剪器工作正常,有时无法裁剪图片。当它工作时,我在控制台中没有得到任何错误,但当它不工作时,我在控制台中得到这个错误 这是我下载的croppie Library,目前正在使用 这是我的密码 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua

我正在使用croppie库来帮助我裁剪图片。然而,奇怪的是,有时裁剪器工作正常,有时无法裁剪图片。当它工作时,我在控制台中没有得到任何错误,但当它不工作时,我在控制台中得到这个错误

这是我下载的croppie Library,目前正在使用

这是我的密码

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="css/Profil.css"> <!-- Länk till CSS -->
  <link rel="stylesheet" href="css/cropper.css"> <!-- Cropper -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" crossorigin="anonymous"> <!-- Cropper -->
  <script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script> <!-- Croppper -->
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script> <!-- Croppper -->
  <script src="js/cropper.js"></script> <!-- Croppper -->

        <div class="container">
            <label class="label" data-toggle="tooltip" title="Change your avatar">
              <img class="circle-image" id="avatar" src="https://avatars0.githubusercontent.com/u/3456749?s=160" alt="avatar">
              <input type="file" class="sr-only" id="input" name="image" accept="image/*">
            </label>
          <!-- <div class="progress">
              <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
            </div> -->
            <div class="alert" role="alert"></div>
            <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
              <div class="modal-dialog" role="document">
                <div class="modal-content">
                  <div class="modal-header">
                    <h5 class="modal-title" id="modalLabel">Crop the image</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                      <span aria-hidden="true">&times;</span>
                    </button>
                  </div>
                  <div class="modal-body">
                    <div class="img-container">
                      <img id="image" src="https://avatars0.githubusercontent.com/u/3456749">
                    </div>
                  </div>
                  <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                    <button type="button" class="btn btn-primary" id="crop">Crop</button>
                  </div>
                </div>
              </div>
            </div>
          </div>
Javascript

window.addEventListener('DOMContentLoaded', function () {
      var avatar = document.getElementById('avatar');
      var image = document.getElementById('image');
      var input = document.getElementById('input');
      var $progress = $('.progress');
      var $progressBar = $('.progress-bar');
      var $alert = $('.alert');
      var $modal = $('#modal');
      var cropper;

      $('[data-toggle="tooltip"]').tooltip();

      input.addEventListener('change', function (e) {
        var files = e.target.files;
        var done = function (url) {
          input.value = '';
          image.src = url;
          $alert.hide();
          $modal.modal('show');
        };
        var reader;
        var file;
        var url;

        if (files && files.length > 0) {
          file = files[0];

          if (URL) {
            done(URL.createObjectURL(file));
          } else if (FileReader) {
            reader = new FileReader();
            reader.onload = function (e) {
              done(reader.result);
            };
            reader.readAsDataURL(file);
          }
        }
      });

      $modal.on('shown.bs.modal', function () {
        cropper = new Cropper(image, {
          aspectRatio: 1,
          viewMode: 2,


        });
      }).on('hidden.bs.modal', function () {
        cropper.destroy();
        cropper = null;
      });

      document.getElementById('crop').addEventListener('click', function () {
        var initialAvatarURL;
        var canvas;

        $modal.modal('hide');

        if (cropper) {
          canvas = cropper.getCroppedCanvas({
            width: 160,
            height: 160,

          });

          initialAvatarURL = avatar.src;
          avatar.src = canvas.toDataURL();
          $progress.show();
          $alert.removeClass('alert-success alert-warning');
          canvas.toBlob(function (blob) {
            var formData = new FormData();

            formData.append('avatar', blob, 'avatar.jpg');
            $.ajax('https://jsonplaceholder.typicode.com/posts', {
              method: 'POST',
              data: formData,
              processData: false,
              contentType: false,

              xhr: function () {
                var xhr = new XMLHttpRequest();

                xhr.upload.onprogress = function (e) {
                  var percent = '0';
                  var percentage = '0%';

                  if (e.lengthComputable) {
                    percent = Math.round((e.loaded / e.total) * 100);
                    percentage = percent + '%';
                    $progressBar.width(percentage).attr('aria-valuenow', percent).text(percentage);
                  }
                };

                return xhr;
              },

               success: function () {
                $alert.show().addClass('alert-success').text('Upload success');
               },

              error: function () {
                avatar.src = initialAvatarURL;
                $alert.show().addClass('alert-warning').text('Upload error');
              },

              complete: function () {
                $progress.hide();
              },
            });
          });
        }
      });
    });
使用实时服务器

install live-server: npm install -g live-server
Move your terminal to where your pages live: cd <path-to-content>
Start the server: live-server .
Open localhost:8080 in a browser.
安装live server:npm安装-g live server
将终端移动到页面所在的位置:cd
启动服务器:live server。
在浏览器中打开localhost:8080。

很奇怪,这是一个间歇性问题。CORS头不是一个暂时的东西。通常情况下,我会将此作为一个副本关闭(这可能值得您花时间阅读,以便您了解CORS是什么),但是这不是一个固定的问题,我会留下它,因为可能存在潜在的问题。我认为这超出了你的控制范围,是接收域的问题。假设你和他们有SLA,我会提出一个支持请求。
install live-server: npm install -g live-server
Move your terminal to where your pages live: cd <path-to-content>
Start the server: live-server .
Open localhost:8080 in a browser.