ক্রস অরিজিন অনুরোধগুলি কেবলমাত্র HTTP- র জন্য সমর্থিত তবে এটি ক্রস-ডোমেন নয়


88

আমি এজেএক্স অনুরোধ করতে এই কোডটি ব্যবহার করছি:

$("#userBarSignup").click(function(){
    $.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
        {/*params*/},
        function(response){
            $("#signup").html("TEST");
            $("#signup").html(response);
        },
        "html");

তবে গুগল ক্রোম জাভাস্ক্রিপ্ট কনসোল থেকে আমি এই ত্রুটিটি পেতে থাকি:

এক্সএমএলএইচটিপিআরকুয়েস্ট ফাইলটি লোড করতে পারে না: /// সি: /xampp/htdocs/webname/resources/templates/signup.php। ক্রস অরিজিন অনুরোধগুলি কেবলমাত্র HTTP- র জন্য সমর্থিত।

সমস্যাটি হ'ল সাইনআপ.এফপি ফাইলটি আমার স্থানীয় ওয়েব সার্ভারে হোস্ট করা হয় যেখানে সমস্ত ওয়েবসাইট চালিত হয় তাই এটি ক্রস-ডোমেন নয়।

কিভাবে আমি এই সমস্যার সমাধান করতে পারে?


4
আপনি কি স্থানীয় পাথের পরিবর্তে কোনও HTTP URL ব্যবহার করার চেষ্টা করেছেন?
এডওয়ার্ড থমসন

4
আমি একটি পূর্ণ url ব্যবহার করার পরামর্শ দেব
ডমিনিক গ্রীন

4
@ অ্যাডওয়ার্ড থমসন এটি কাজ করেছে! তবে এখন allow_url_include = Onআমার সার্ভার কনফিগারেশনটি সেট করতে হবে ।
সায়াননোন

উত্তর:


76

আপনাকে প্রকৃতপক্ষে একটি ওয়েবসভারটি চালানো দরকার এবং সেই সার্ভারে একটি ইউআরআই-তে অনুরোধ করা উচিত, কোনও ফাইলের জন্য অনুরোধ করার চেয়ে; যেমন লাইন পরিবর্তন:

    $.get("C:/xampp/htdocs/webname/resources/templates/signup.php",

যেমন কিছু পড়তে:

    $.get("http://localhost/resources/templates/signup.php",

এবং প্রাথমিক অনুরোধ পৃষ্ঠাটিও HTTP- র মাধ্যমে করা দরকার।


এটা চমত্কার ভাবে কাজ করেছে. এখন আমি allow_url_include = Onআমার সার্ভার কনফিগারেশন সেট করতে হবে । আমি কি এটি নিরাপদে সক্ষম করতে পারি বা এটি কিছু সুরক্ষার সমস্যার কারণ হতে পারে?
সায়াননোন

Get .getটি আসলে ওয়েব ব্রাউজারের জাভাস্ক্রিপ্ট প্রসঙ্গে জারি করা হয়, সুতরাং সেই ফাইলটির URL টি রেফারেন্স থাকা দরকার - পিএইচপি তে লেখা কোডটি এখনও ইস্যু ছাড়াই স্থানীয় ফাইলগুলিকে রেফারেন্স করতে পারে
পিটেশ

44
বিকল্পভাবে পাইথন সমাধান রয়েছে: (1) ফোল্ডারে একটি কনসোল নেভিগেট করুন, (2) প্রবেশ করুন python -m SimpleHTTPServer 8888, তারপরে (3) ব্রাউজারে নেভিগেট করুনhttp://localhost:8888/
ভূ

+1 এটি আমার সমস্যা সমাধানে অনেক সহায়তা করেছে । অনেক অনেক ধন্যবাদ :)
প্রবীণ

4
পাইথন 3 ব্যবহারকারীর জন্য দ্রষ্টব্য: ব্যবহার করুনpython -m http.server 8888
জেল ফ্রেইন

113

আমি নিম্নলিখিত স্যুইচ দিয়ে ক্রোম শুরু করার ভাগ্য পেয়েছি:

--allow-file-access-from-files

ওএস এক্স চেষ্টা করে (পেস্ট অনুলিপি করলে ড্যাশগুলি আবার টাইপ করুন):

open -a 'Google Chrome' --args -allow-file-access-from-files

অন্যান্য * নিক্স রান (পরীক্ষিত নয়)

 google-chrome  --allow-file-access-from-files

বা উইন্ডোতে ক্রোম শর্টকাটের বৈশিষ্ট্যগুলি সম্পাদনা করুন এবং স্যুইচ যুক্ত করুন, যেমন

 C:\ ... \Application\chrome.exe --allow-file-access-from-files

"লক্ষ্য" পথের শেষে


7
Google Chrome- এ ওয়ার্কস নীতিগতভাবে কিন্তু নোট (v24 হিসাবে কমপক্ষে) OS X এর উপর আপনি এটা নিম্নরূপে ডাকা হবে যে: open -a 'Google Chrome' --args —allow-file-access-from-files। এছাড়াও দ্রষ্টব্য: আপনি যদি কোনও ফাইল: // - ভিত্তিক ইউআরএল (কোনও ফাইল-সিস্টেমের পাথের চেয়ে) নির্দিষ্ট করে থাকেন তবে তার file://localhost/...পরিবর্তে অবশ্যই নিশ্চিত হন file:///...
mklement0

6
গতবার আমি উইন্ডোতে এটি করার চেষ্টা করেছি উপরের পদ্ধতিটি কার্যকর হয়নি। সুইচ অনুসরণ করে ডস প্রম্পট থেকে ক্রোম চালু করতে পেরেছি ... অসম্পূর্ণ তবে কার্যক্ষম।
prauchfuss

লিনাক্সে দুর্দান্ত কাজ করে।
ব্যবহারকারী1205577

OS X Yosemite 10.10.2 এবং Chrome সংস্করণ 41.0.2272.89 (-৪-বিট) এ দুর্দান্ত কাজ করে fine
ডুড

86

আপনি যদি সামান্য ফ্রন্ট-এন্ড প্রকল্পে কাজ করছেন এবং স্থানীয়ভাবে এটি পরীক্ষা করতে চান, আপনি সাধারণত ওয়েব ব্রাউজারে আপনার স্থানীয় ডিরেক্টরিটি নির্দেশ করে এটি খুলতে চান, উদাহরণস্বরূপ ফাইলটি প্রবেশ করিয়ে: /// হোম / এরিক / ম্যাসিপারপ্রজেক্ট / সূচক আপনার URL বারে .html। তবে, যদি আপনার সাইটটি যদি আপনার স্থানীয় ডিরেক্টরিতে স্থাপন করা হয় তবে তারা যদি সংস্থানগুলি লোড করার চেষ্টা করে তবে আপনি সম্ভবত সতর্কতা দেখতে পাবেন:

এক্সএমএলএইচটিপিআরকোয়েস্ট ফাইলটি লোড করতে পারে না: ///home/erick/mysuperproject/mylibrary.js। ক্রস অরিজিন অনুরোধগুলি কেবলমাত্র HTTP- র জন্য সমর্থিত।

ক্রোম এবং অন্যান্য আধুনিক ব্রাউজারগুলি ক্রস অরিজিন অনুরোধগুলির জন্য সুরক্ষা নিষেধাজ্ঞাগুলি কার্যকর করেছে, যার অর্থ আপনি ফাইল: /// এর মাধ্যমে কোনও কিছু লোড করতে পারবেন না, এমনকি আপনাকে স্থানীয়ভাবে-একই সময়ে স্থানীয় উত্স নীতিগুলিও প্রয়োগ করতে হবে: সেই হিসাবে সহজ, আপনার প্রকল্পটি চালানোর জন্য আপনাকে একটি ওয়েবসভার মাউন্ট করতে হবে।

এটি বিশ্বের শেষ নয় এবং সেখানে অনেকগুলি সমাধান রয়েছে, যেমন পুরানো অ্যাপাচি (ভার্চুয়ালহোস্টগুলির সাথে যদি আপনি বেশ কয়েকটি অন্যান্য প্রকল্প চালাচ্ছেন), এক্সপ্রেস সহ নোড.জেস, একটি রুবি সার্ভার, ইত্যাদি বা কেবল আপনার সংশোধন করে ব্রাউজার সেটিংস।

তবে অলসদের জন্য একটি সহজ এবং হালকা ওজনের সমাধান রয়েছে। আপনি পাইথনের সিম্পল এইচটিটিপিএসবার ব্যবহার করতে পারেন। এটি ইতিমধ্যে পাইথনের সাথে বান্ডিল হয়ে আসে যাতে আপনার কোনও কিছু ইনস্টল বা কনফিগার করার দরকার নেই!

উদাহরণস্বরূপ, আপনার প্রকল্প ডিরেক্টরিতে সিডি করুন

1 সিডি / হোম / এরিক / মাইসুপারপ্রজেক্ট এবং তারপরে সহজভাবে ব্যবহার করুন

1 পাইথন-এম সিম্পল এইচটিটিপিএস সার্ভার এবং এটি হ'ল আপনি এই বার্তাটি আপনার টার্মিনালে দেখবেন

০.০.০.০ বন্দরে ৮০০০ টিতে HTTP পরিবেশন করা হচ্ছে ... সুতরাং এখন আপনি আপনার ব্রাউজারে ফিরে যেতে পারেন এবং http://0.0.0.0:8000সেখানে পরিবেশন করা আপনার সমস্ত ডিরেক্টরি ফাইলের সাথে ঘুরে আসতে পারেন । আপনি বন্দর এবং অন্যান্য জিনিসগুলি কনফিগার করতে পারেন, কেবলমাত্র ডকুমেন্টেশন দেখুন। আমি যখন নতুন লাইব্রেরি পরীক্ষা করতে বা কোনও নতুন ধারণা তৈরির জন্য ছুটে যাই তখন এই কৌশলটি আমার পক্ষে কার্যকর হয়।

আপনি সেখানে যান, শুভ কোডিং!

সম্পাদনা: পাইথন 3+ এ, সিম্পল এইচটিটিপিএসবারকে HT.server দিয়ে প্রতিস্থাপন করা হয়েছে। উদাহরণস্বরূপ, পাইথন ৩.৩-তে নিম্নলিখিত কমান্ডটি সমান:

python -m http.server 8000

4
অলস সমাধানটি দুর্দান্ত। খুব সোজা, আপনার আর কিছু করার দরকার নেই।
নিকো


উইন্ডোজ 8.1 এ, আপনাকে এখনও পাইথন নং ইনস্টল করতে হবে?
J86

আমি উইন্ডোজে এক্সএ্যাম্প্প ব্যবহার করি, এটি সহজ, আমি নোড ব্যবহারের পরামর্শ দিই, সার্ভারটি চালানোর অনুমতি দেওয়ার জন্য স্কাইপের 80 বন্দরটি
অবরুদ্ধ

10

পৃষ্ঠাটি জনপ্রিয় করতে JSON ডেটা ব্যবহার করা সহজভাবে এইচটিএমএল ফাইলগুলি লোড করার চেষ্টা করার সময় আমি একই ত্রুটি পেয়েছি, তাই আমি সমস্যাটি সমাধানের জন্য নোড.জেএস ব্যবহার করেছি এবং প্রকাশ করব express আপনার যদি নোড ইনস্টল না থাকে তবে আপনাকে প্রথমে নোড ইনস্টল করতে হবে

  1. এক্সপ্রেস ইনস্টল করুন npm install express

  2. আপনার প্রকল্পের মূল ফোল্ডারে একটি সার্ভার.জেএস ফাইল তৈরি করুন, আমার ক্ষেত্রে যে ফাইলগুলি আমি সার্ভার করতে চেয়েছিলাম তার উপরে একটি ফোল্ডার

  3. সার্ভার.জেএস ফাইলে নীচের মতো কিছু রাখুন এবং এক্সপ্রেস গিহাব সাইটে এটি পড়ুন:

    var express = require('express');
    var app = express();
    var path = require('path');
    
    // __dirname will use the current path from where you run this file 
    app.use(express.static(__dirname));
    app.use(express.static(path.join(__dirname, '/FOLDERTOHTMLFILESTOSERVER')));
    
    app.listen(8000);
    console.log('Listening on port 8000');
    
  4. আপনি সার্ভার.জগুলি সংরক্ষণ করার পরে, আপনি সার্ভারটি ব্যবহার করে চালাতে পারেন:

node server.js

  1. যান http://localhost:8000/FILENAMEএবং আপনি যে HTML ফাইলটি লোড করার চেষ্টা করছেন তা দেখতে হবে

4

যদি আপনার নোডেজ ইনস্টল থাকে তবে আপনি কমান্ড লাইন ব্যবহার করে সার্ভারটি ডাউনলোড এবং ইনস্টল করতে পারেন:

npm install -g http-server

আপনি যে ডিরেক্টরি থেকে ফাইল পরিবেশন করতে চান সেই ডিরেক্টরিতে ডিরেক্টরিগুলি পরিবর্তন করুন:

$ cd ~/projects/angular/current_project 

সার্ভারটি চালান:

$ http-server 

যা এইচটিসি সার্ভার শুরু করে বার্তা উত্পন্ন করবে, এতে পরিবেশন করবে:

উপলভ্য: http: // আপনার_ইপ: 8080 এবং http://127.0.0.1:8080

এটি আপনাকে আপনার ব্রাউজারে ইউআরএল পছন্দ করতে দেয়

http: // your_ip: 8080 / index.html


1

এটি এইভাবে সেরা কাজ করে। উভয় ফাইল সার্ভারে রয়েছে তা নিশ্চিত করুন। এইচটিএমএল পৃষ্ঠাতে কল করার সময়, ওয়েব ঠিকানাটি যেমন: http:://localhost/myhtmlfile.htmlএবং না, ব্যবহার করুন C::///users/myhtmlfile.html। পাশাপাশি তৈরি করুন যে জসনকে দেওয়া ইউআরএলটি একটি ওয়েব ঠিকানা যা নীচে বর্ণিত:

$(function(){
                $('#typeahead').typeahead({
                    source: function(query, process){
                        $.ajax({
                            url: 'http://localhost:2222/bootstrap/source.php',
                            type: 'POST',
                            data: 'query=' +query,
                            dataType: 'JSON',
                            async: true,
                            success: function(data){
                                process(data);
                            }
                        });
                    }
                });
            });

0
REM kill all existing instance of chrome 
taskkill /F /IM chrome.exe /T
REM directory path where chrome.exe is located
set chromeLocation="C:\Program Files (x86)\Google\Chrome\Application"
cd %chromeLocation%
cd c:
start chrome.exe --allow-file-access-from-files
  1. আপনার সাথে ক্রোম অবস্থানের পথ পরিবর্তন করুন।

  2. .bat ফাইল হিসাবে উপরে সংরক্ষণ করুন।

  3. আপনার তৈরি ব্যাচ ফাইলটিতে ড্র্যাগ ড্রপ করুন। (ক্রোম পৃষ্ঠাগুলি পুনরুদ্ধার করার বিকল্প দেয় তবে তা যদি আপনার পৃষ্ঠা খোলা থাকে তবে কেবল পুনরুদ্ধার করুন এবং এটি কার্যকর হবে)।


0

আপনি পিএইচপি ইন্টারপ্রেটার ব্যবহার করে অজগর ছাড়াই একটি সার্ভার শুরু করতে পারেন।

যেমন:

cd /your/path/to/website/root
php -S localhost:8000

আপনি যদি এনপিএমের বিকল্প চান তবে এটি দরকারী হতে পারে, কারণ পিএইচপি ইউটিলিটি কিছু ওএসের (ম্যাক সহ) প্রিনস্টল হয়।


0

সমস্ত অজগর ব্যবহারকারীদের জন্য:

টার্মিনালে কেবল আপনার গন্তব্য ফোল্ডারে যান।

cd projectFoder

তারপরে পাইথন 3 + এর জন্য এইচটিটিপি সার্ভার শুরু করুন:

python -m http.server 8000

HTTP পরিবেশন করা হচ্ছে :: পোর্ট 8000 (HTTP: // [::]: 8000 /) ...

আপনার লিঙ্কে যান: http : //0.0.0.0 : 8000/

উপভোগ করুন :)

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