কৌণিক জেএস ত্রুটি: ক্রস উত্স অনুরোধগুলি কেবল প্রোটোকল স্কিমগুলির জন্য সমর্থিত: এইচটিপি, ডেটা, ক্রোম-এক্সটেনশন, https


130

আমার কাছে খুব সাধারণ কৌণিক জেএস অ্যাপ্লিকেশনটির তিনটি ফাইল রয়েছে

index.html

<!DOCTYPE html>
<html ng-app="gemStore">
  <head>
    <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js'></script>
    <script type="text/javascript" src="app.js"></script>
  </head>

  <body ng-controller="StoreController as store">
      <div class="list-group-item" ng-repeat="product in store.products">
        <h3>{{product.name}} <em class="pull-right">{{product.price | currency}}</em></h3>
      </div>

  <product-color></product-color>
  </body>
</html>

পণ্য-color.html

<div class="list-group-item">
    <h3>Hello <em class="pull-right">Brother</em></h3>
</div>

app.js

(function() {
  var app = angular.module('gemStore', []);

  app.controller('StoreController', function($http){
              this.products = gem;
          }
  );

  app.directive('productColor', function() {
      return {
          restrict: 'E', //Element Directive
          templateUrl: 'product-color.html'
      };
   }
  );

  var gem = [
              {
                  name: "Shirt",
                  price: 23.11,
                  color: "Blue"
              },
              {
                  name: "Jeans",
                  price: 5.09,
                  color: "Red"
              }
  ];

})();

আমি কাস্টম নির্দেশিত নামযুক্ত পণ্য রঙ ব্যবহার করে প্রোডাক্ট-কালার এইচটিটিএমএল অন্তর্ভুক্ত করে প্রবেশ করার সাথে সাথেই আমি এই ত্রুটিটি পাওয়া শুরু করেছি:

XMLHttpRequest cannot load file:///C:/product-color.html. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.
angular.js:11594 Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///C:/product-color.html'.

ভুল হতে পারে কি? এটি কি প্রোডাক্ট-কালার এইচটিএমএল এর জন্য কোনও পথের সমস্যা?

আমার তিনটি ফাইল একই রুট ফোল্ডারে রয়েছে C:/user/project/


1
মাত্র একটি দ্রুত পয়েন্টার যে আপনি যদি বোকা কিছু করেন, যেমন আমার ক্ষেত্রে আমি ঘটনাক্রমে বন্দরে TLD যুক্ত করেছি: " লোকালহস্ট: 8070.com " তবে আপনি একই ত্রুটি পাবেন। আপনি সমাধান করার চেষ্টা করছেন কোন ইউআরএল!
ওয়াইল্ডহনি

এখানেও একই রকম হতে পারে: stackoverflow.com/questions/10752055/…
Ngô ấc Tuấn

উত্তর:


306

এই ত্রুটিটি ঘটছে কারণ আপনি সরাসরি ব্রাউজার থেকে এইচটিএমএল নথি খুলছেন। এটি ঠিক করতে আপনাকে একটি ওয়েব সার্ভার থেকে আপনার কোডটি পরিবেশন করতে হবে এবং লোকালহোস্টে এটি অ্যাক্সেস করতে হবে। আপনার যদি অ্যাপাচি সেটআপ থাকে তবে আপনার ফাইলগুলি পরিবেশন করতে এটি ব্যবহার করুন। কিছু আইডিই ওয়েব সার্ভারে তৈরি করেছে, যেমন জেটব্রেইনস আইডিই, এক্সলিপস ...

আপনার যদি নোড.জেস সেটআপ থাকে তবে আপনি HT- সার্ভার ব্যবহার করতে পারেন । কেবল চালান npm install http-server -gএবং আপনি এটি টার্মিনালের মতো ব্যবহার করতে সক্ষম হবেন http-server C:\location\to\app


6
দুর্দান্ত সমাধান!
হোর্হে

3
HTTP- সার্ভার হ'ল স্থানীয়ভাবে হোস্টিংয়ের সবচেয়ে সহজ উপায়। দ্রষ্টব্য: যদি আপনার উইন্ডোজগুলিতে এনপিএম না থাকে তবে কেবল নোড.জেএস ইনস্টল করুন এবং এটি সেমিডিতে উপলভ্য হবে।
অক্টেন

3
এবং যদি অ্যান্ড্রয়েডের ওয়েবভিউতে এটি ঘটে থাকে তবে আমার কী করা উচিত !?
ডাঃ জ্যাকি

2
কৌতূহলের বাইরে, কেন কেবল ওয়েব ব্রাউজারে ফাইলগুলি খোলা সম্ভব নয়?
tobiak777

3
@ রেডি প্লেইন এবং সহজ: ব্রাউজারের জন্য সরাসরি আপনার কম্পিউটারে ফাইল সিস্টেম অ্যাক্সেস করা সুরক্ষার সমস্যা।
অ্যালেক্স জে

49

খুব সহজ ফিক্স

  1. আপনার অ্যাপ ডিরেক্টরিতে যান
  2. সিম্পিএলটিটিপিএস সার্ভার শুরু করুন


টার্মিনালে

$ cd yourAngularApp
~/yourAngularApp $ python -m SimpleHTTPServer

এখন, আপনার ব্রাউজারে লোকালহোস্টে যান: 8000 এবং পৃষ্ঠাটি প্রদর্শিত হবে


8
পাইথন 3 এ এটি হওয়া উচিত python -m http.server
লুয়ান নিকো

1
এটি অনেক সাহায্য করেছে! দুর্দান্ত সমাধান।
মিরতা

42

ক্রোমে ক্রিয়াকলাপ অনুমোদিত নয়। আপনি হয় একটি HTTP সার্ভার (টমক্যাট) ব্যবহার করতে পারেন বা আপনি তার পরিবর্তে ফায়ারফক্স ব্যবহার করতে পারেন।


4
আমি আমার পরিস্থিতিতে পরিবর্তে ফায়ারফক্স ব্যবহার করেছি এবং এটি কার্যকর হয়। ফায়ারফক্সের ক্রোমের কি আরও সুরক্ষা আছে? আমাকে কেন এটি করার অনুমতি দেওয়া হচ্ছে ....
ThatOneGuy

এটি আমার পক্ষে সেরা উত্তর answer
থমাস

1
সংক্ষিপ্ত এবং সাধারণ ... কাজ করেছেন!
viks

সত্যিই আমাকে খুব সাহায্য করেছে।
রাম দত্ত শুক্লা

1
আরে .. অনেক অনেক ধন্যবাদ .. আপনার উত্তরটি এত বড় সহায়ক ছিল ... আমার অনেক সময় বাঁচিয়েছে
মেঘা

31

আমার http://ইউআরএল ঠিকানার সাথে যুক্ত করে আমার সমস্যাটি সমাধান করা হয়েছিল । উদাহরণস্বরূপ আমি http://localhost:3000/moviesপরিবর্তে ব্যবহার localhost:3000/movies


13

যদি আপনি এটি ক্রোম / ক্রোমিয়াম ব্রাউজারে ব্যবহার করেন (উদা: উবুন্টু ১৪.০৪ তে), আপনি এই সমস্যাটি মোকাবেলায় নীচের একটি আদেশ ব্যবহার করতে পারেন।

ThinkPad-T430:~$ google-chrome --allow-file-access-from-files
ThinkPad-T430:~$ google-chrome --allow-file-access-from-files fileName.html

ThinkPad-T430:~$ chromium-browser --allow-file-access-from-files
ThinkPad-T430:~$ chromium-browser --allow-file-access-from-files fileName.html

এটি আপনাকে ক্রোম বা ক্রোমিয়ামে ফাইল লোড করতে দেয়। যদি আপনাকে উইন্ডোজের জন্য একই ক্রিয়াকলাপ করতে হয় তবে আপনি এই স্যুইচটি ক্রোম শর্টকাটের বৈশিষ্ট্যে যুক্ত করতে পারেন বা cmdপতাকা দিয়ে চালাতে পারেন । ডিফল্টরূপে ক্রোম, অপেরা, ইন্টারনেট এক্সপ্লোরারে এই অপারেশনটির অনুমতি নেই। ডিফল্টরূপে এটি কেবল ফায়ারফক্স এবং সাফারিতেই কাজ করে। অতএব এই আদেশটি ব্যবহার করা আপনাকে সহায়তা করবে।

পর্যায়ক্রমে আপনি কোনও ওয়েব সার্ভারে এটি হোস্ট করতে পারেন (উদাহরণ: টমক্যাট-জাভা, নোডজেএস-জেএস, টর্নেডো-পাইথন ইত্যাদি) আপনি কোন ভাষার সাথে স্বাচ্ছন্দ্য বোধ করছেন। এটি যে কোনও ব্রাউজার থেকে কাজ করবে।


12

যদি কোনও কারণে আপনার ওয়েবসভার থেকে ফাইল হোস্ট না করতে পারে এবং পার্টিয়াল লোড করার জন্য এখনও কোনও ধরণের প্রয়োজন হয় তবে আপনি ngTemplateনির্দেশটি ব্যবহার করে অবলম্বন করতে পারেন ।

এইভাবে, আপনি আপনার ইনডেক্স.ইচটিএমএল ফাইলটিতে স্ক্রিপ্ট ট্যাগগুলির মধ্যে আপনার মার্কআপটি অন্তর্ভুক্ত করতে পারেন এবং সত্যিকার নির্দেশের অংশ হিসাবে মার্কআপটি অন্তর্ভুক্ত করতে হবে না।

এটি আপনার সূচী। Html এ যুক্ত করুন

<script type='text/ng-template' id='tpl-productColour'>
 <div class="list-group-item">
    <h3>Hello <em class="pull-right">Brother</em></h3>
</div>
</script>

তারপরে, আপনার নির্দেশে:

app.directive('productColor', function() {
      return {
          restrict: 'E', //Element Directive
          //template: 'tpl-productColour'
          templateUrl: 'tpl-productColour'
      };
   }
  );

'Tpl-productColor': আমি ইতিমধ্যে এই পোস্টে ব্যবহার templateUrl সম্পাদনা করেছি হিসাবে
HANU

5

মূল কারণ:

ফাইল প্রোটোকল ক্রোমের জন্য ক্রস অরিজিন অনুরোধ সমর্থন করে না

সমাধান 1:

ফাইলের পরিবর্তে HTTP প্রোটোকল ব্যবহার করুন, অর্থ: একটি সার্ভার যেমন অ্যাপাচি, বা নোডেজ + http-সার্ভার সেট আপ করুন

বিদ্রূপ 2:

যোগ --allow ফাইল অ্যাক্সেস-থেকে-ফাইল Chrome`s শর্টকাট লক্ষ্য পর এবং খোলা নতুন ব্রাউজ উদাহরণস্বরূপ এই শর্টকাট ব্যবহার করলে

এখানে চিত্র বর্ণনা লিখুন

সমাধান 3:

পরিবর্তে ফায়ারফক্স ব্যবহার করুন


ফায়ারফক্স ব্যবহার করা আমাকে সাহায্য করেছে
ভিনিথ সুব্বারায়া

5
  1. চলমান কমান্ড, HTTP- সার্ভার ইনস্টল করুন npm install http-server -g
  2. Index.html যেখানে অবস্থিত সেখানে টার্মিনালটি খুলুন
  3. আপনার আদেশ প্রদান করুন http-server . -o
  4. উপভোগ কর!

4

আমি যুক্ত করব যে কেউ এক্সএএমপি, ম্যাম্প ধরণের জিনিসও ব্যবহার করতে পারে এবং আপনার প্রকল্পটি এইচটিডোকস ফোল্ডারে রাখতে পারে যাতে এটি লোকালহোস্টে অ্যাক্সেসযোগ্য হয়


2

আপনি যদি ইতিমধ্যে সার্ভার চালাচ্ছেন, তবে API কলটিতে http: // ব্যবহার করতে ভুলবেন না । এটি মারাত্মক ঝামেলার কারণ হতে পারে।


ধন্যবাদ মানুষ, দুই ঘন্টা একই সমস্যার সমাধান খুঁজছিল এবং এটি ছিল ...
সান্তি নুনেজ

স্বাগতম ভাই। শুভ কোডিং :)
এডিসন ডিসোজা

1

কারন

আপনি অ্যাপাচি-এর মতো সার্ভারের মাধ্যমে পৃষ্ঠাটি খুলছেন না, সুতরাং যখন ব্রাউজারটি উত্সটি অর্জন করার চেষ্টা করে তখন মনে করে যে এটি কোনও পৃথক ডোমেন থেকে, যা অনুমোদিত নয়। যদিও কিছু ব্রাউজার এটির অনুমতি দেয় না।

সমাধান

Inetmgr চালান এবং স্থানীয়ভাবে আপনার পৃষ্ঠা হোস্ট করুন এবং HTTP: // লোকালহস্ট: পোর্টনম্বার / পেজনাম html হিসাবে বা অ্যাপাচি, এনগিনেক্স , নোড ইত্যাদির মতো ওয়েব সার্ভারের মাধ্যমে ব্রাউজ করুন

বিকল্পভাবে একটি ভিন্ন ব্রাউজার ব্যবহার করুন ফায়ারফক্স এবং সাফারি ব্যবহার করে সরাসরি পৃষ্ঠাটি খোলার সময় কোনও ত্রুটি দেখানো হয়নি। এটি কেবল ক্রোম এবং আইই (এক্সএক্স) এর জন্য আসে।

আপনি যদি বন্ধনী, সাবলাইম বা নোটপ্যাড ++ এর মতো কোড সম্পাদক ব্যবহার করেন তবে সেই অ্যাপসটি স্বয়ংক্রিয়ভাবে এই ত্রুটিটি পরিচালনা করে।


1

ফায়ারফক্স এবং সাফারিতে এই সমস্যাটি ঘটছে না। আপনি xML2json.js এর সর্বশেষতম সংস্করণটি ব্যবহার করছেন তা নিশ্চিত করুন। কারণ আমি IE এ XML পার্সার ত্রুটির মুখোমুখি হয়েছি। Chrome এ সর্বোত্তম উপায়ে আপনার এটি অ্যাপাচি বা এক্সএএমপিপি এর মতো সার্ভারে খোলার উচিত।



0

আপনাকে নীচের পতাকাটি ব্যবহার করে ক্রোম খুলতে হবে মেনু চালাতে যান এবং "ক্রোম - অক্ষম-ওয়েব-সুরক্ষা - ব্যবহারকারী-ডেটা-ডির" টাইপ করুন

ক্রোম খোলার জন্য পতাকা ব্যবহার করার আগে ক্রোমের সমস্ত দৃষ্টান্ত বন্ধ রয়েছে তা নিশ্চিত করুন। আপনি একটি সুরক্ষা সতর্কতা পাবেন যা সিওআর সক্ষম করেছে তা নির্দেশ করে।


0

@ কিরিল ফুকসকে দুর্দান্ত সমাধানে যুক্ত করা এবং @ স্ট্যাক ইউজারের সন্দেহের উত্তর দেওয়া - এইচটিএমএল পৃষ্ঠা পর্যন্ত নয়, কেবলমাত্র অ্যাপ্লিকেশন ফোল্ডার পর্যন্ত পথ নির্ধারণ করুন! http-server C:\location\to\appএবং ফোল্ডারের index.htmlঅধীনে অ্যাক্সেসapp


0

সি তে নেভিগেট করুন: / ব্যবহারকারীর / প্রোজেক্ট / ইন্ডেক্স এইচটিএমএল, ভিজ্যুয়াল স্টুডিও 2017 দিয়ে এটি খুলুন, ফাইল> ব্রাউজারে দেখুন বা Ctrl + Shift + W টিপুন


-1

আমারো একই ইস্যু ছিল. আমার app.js ফাইলের নীচে কোড যুক্ত করার পরে এটি ঠিক হয়ে গেছে।

var cors = require('cors')
app.use(cors());
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.