জ্যাঙ্গো খারাপ অনুরোধ দেয় (400) যখন DEBUG = মিথ্যা


254

আমি জ্যাঙ্গো -১.১ এ নতুন। আমি যখন জাঙ্গো সার্ভারটি দিয়ে চালিত করি তখন DEBUG = Trueএটি পুরোপুরি চলমান। কিন্তু আমি যখন পরিবর্তন DEBUGকরার জন্য Falseসেটিংস ফাইলে, তারপর সার্ভার বন্ধ এবং এটি কমান্ড প্রম্পটে নিম্নলিখিত ত্রুটি দেয়:

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

আমি পরিবর্তিত ALLOWED_HOSTSকরতে ["http://127.0.0.1:8000",], ব্রাউজারে আমি ভুল পাবেন:

Bad Request (400)

ডিবাগ মোড ছাড়াই কি জাঙ্গো চালানো সম্ভব?


একটি জিনিস মনে রাখবেন: 'HTTP' বা 'https' এ যুক্ত করবেন নাALLOWED_HOSTS
শেলবাই

উত্তর:


415

ALLOWED_HOSTSতালিকা সম্পূর্ণরূপে যোগ্যতাসম্পন্ন থাকা উচিত হোস্ট নামের , না URL গুলি। বন্দর এবং প্রোটোকল ছেড়ে দিন। আপনি যদি ব্যবহার করে থাকেন 127.0.0.1তবে localhostআমিও তালিকায় যুক্ত করব:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

আপনি যে কোনও হোস্টকে *ম্যাচ করার জন্যও ব্যবহার করতে পারেন :

ALLOWED_HOSTS = ['*']

ডকুমেন্টেশন উদ্ধৃত:

এই তালিকার মানগুলি সম্পূর্ণরূপে যোগ্য নাম (যেমন 'www.example.com') হিসাবে উপযুক্ত হতে পারে, সেই ক্ষেত্রে তারা অনুরোধের Hostশিরোনামের সাথে ঠিক মিলবে (কেস-সংবেদনশীল, পোর্ট সহ নয় )। : একটি নির্দিষ্ট সময়ের শুরু একটি মান একটি সাবডোমেন ওয়াইল্ডকার্ড রূপে ব্যবহার করা যেতে পারে '.example.com'ম্যাচ হবে example.com, www.example.comএবং, অন্য কোন সাবডোমেন example.com। একটি মান '*'মিলবে কোনও কিছুর সাথে; এক্ষেত্রে আপনি নিজের Hostশিরোনামের নিজস্ব বৈধতা সরবরাহ করতে দায়বদ্ধ (সম্ভবত একটি মিডওয়্যারের ক্ষেত্রে; যদি তাই হয় তবে এই মিডওয়্যারটি অবশ্যই প্রথমে তালিকাভুক্ত করা উচিত MIDDLEWARE_CLASSES)।

বোল্ড জোর আমার

আপনার হোস্ট শিরোলেখর তালিকার কোনও মানের সাথে মেলে না, এমন একটি SuspiciousOperationব্যতিক্রম উত্থাপিত হওয়ার কারণে 400 টি স্থিতির প্রতিক্রিয়া আপনি পান ।


3
ধন্যবাদ এটি কার্যকর হয়, তবে আমি যখন মিথ্যা সেট করি তখন একটি সমস্যা আসে কারণ সমস্ত স্থির ফাইল 404 হিসাবে দেখানো হয় it কেন এটি পাওয়া যায় না তা বুঝতে পারি না
মেগা বাইটস

@ মেগাবাইটস: দুঃখিত, আমি জানি না এটি কী হতে পারে।
মার্টিজন পিটারস

1
আপনি কীভাবে এটি করবেন তা আমাকে পরামর্শ দিতে পারেন, কারণ আমার প্রকল্পটি উত্পাদন চলছে।
মেগা বাইটস 13

আবার, আপনি কী সেট করছেন সে সম্পর্কে আমার কোনও ধারণা নেই False। সম্ভবত আপনি একটি নতুন প্রশ্ন পোস্ট করতে পারে?
মার্টিজন পিটারস

9
@ মেগাবাইটস যখন DEBUG মিথ্যা হয়, সমস্ত স্ট্যাটিক ফাইল STATIC_ROOT থেকে পরিবেশন করা হয়, সম্ভবত সম্ভবত এটি করা ./manage.py collectstaticহবে will
ব্লেকাগল52

6

আমার জন্য, USE_X_FORWARDED_HOSTসত্যটি না সেট করে আমি এই ত্রুটিটি পেয়েছি । দস্তাবেজগুলি থেকে:

এটি কেবল তখনই সক্ষম করা উচিত যদি এই শিরোলেখ সেট করে এমন কোনও প্রক্সি ব্যবহৃত হয়।

আমার হোস্টিং পরিষেবা তাদের ডকুমেন্টেশনে স্পষ্টভাবে লিখেছিল যে এই সেটিংটি অবশ্যই ব্যবহার করা উচিত এবং আমি যদি এটি ভুলে যাই তবে আমি এই 400 ত্রুটিটি পেয়েছি।


ALLOWED_HOSTS = ['*'] থাকলে এটি কী প্রয়োজনীয়?
মাইক স্টোডার্ড্ট

1
আমার মনে হয় ALLOWED_HOSTS সম্পূর্ণ হোস্টকে অবরুদ্ধ করে। USE_X_FORWARDED_HOST কেবল কোনও HTTP শিরোনাম ব্যবহার করা হয় কিনা তা নির্ধারণ করে।
কিথ

3

আমার একই সমস্যা ছিল এবং আমি এটি ALLOWED_HOSTS = ['*']স্থির চিত্রগুলি সেট করে এবং সমস্যার সমাধান করতে পারি পরিবেশ কনফিগারেশনের ভার্চুয়াল পাথগুলিকে এভাবে পরিবর্তন করতে হবে:

ভার্চুয়াল পাথ                 ডিরেক্টরি

/ স্ট্যাটিক / / অপ্ট / পাইথন / কারেন্ট / অ্যাপ / আপনারপিজে / স্ট্যাটিক /
/ মিডিয়া / / অপ্ট / পাইথন / বর্তমান / অ্যাপ / নিউভো / মিডিয়া /

আমি এটি আপনাকে সাহায্য করে আশা করি।

পিডি: আমার খারাপ ইংরেজির জন্য দুঃখিত।


2

আমার একই সমস্যা ছিল এবং উত্তরের কোনও উত্তরই আমার সমস্যার সমাধান করেনি, পরিস্থিতিটি সমাধান করার জন্য নীচের কনফিগারটিকে settings.pyঅস্থায়ীভাবে যুক্ত করে লগিং সক্ষম করা ভাল better

LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/tmp/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, }, }

এবং চেষ্টা করুন tail -f /tmp/debug.log। এবং আপনি যখন নিজের সমস্যাটি দেখেন তখন অন্ধ ডিবাগিংয়ের চেয়ে এটিকে অনেক সহজ পরিচালনা করতে পারেন।

আমার বিষয়টি প্রায় ছিল

অবৈধ HTTP_HOST শিরোনাম: 'pt_web: 8000'। সরবরাহ করা ডোমেন নাম আরএফসি 1034/1035 অনুসারে বৈধ নয়।

এবং যোগ করে এটি সমাধান proxy_set_header Host $host;nginx কনফিগ ফাইলে দ্বারা পোর্ট ফরওয়ার্ড সক্রিয় USE_X_FORWARDED_PORT = Trueমধ্যে settings.py(এটা কারণ আমার ক্ষেত্রে আমি পোর্টে nginx অনুরোধ শোনার করেছি 8080এবং এটি পাস guniপোর্টে8000


ভাগ করে নেওয়ার জন্য ধন্যবাদ. প্রোডে আমার কেসটির জন্য, আমি লগিং = ... যুক্ত করার পরে, আমি "ভ্যালুয়েরর: ... সিএসএস" এর স্ট্যাটিকফাইলে ম্যানিফেস্ট এন্ট্রি মিস করছি ত্রুটিটি দেখতে পাচ্ছি। তারপরে আমি "পাইথন ম্যানেজার.পিপি কালেক্টস্যাট্যাটিক" ব্যবহার করেছি উপরে বর্ণিত @ ব্লেকাগল ৫২ দ্বারা, ৫০০ ত্রুটি (আমার স্থানীয় দেবের মধ্যে 400 ত্রুটিও হতে পারে) সমাধান হয়ে গেছে।
zhihong

1

আমার জন্য যেমন আমি ইতিমধ্যে 127.0.0.1 এ xampp করেছি এবং 127.0.1.1 এ জাঙ্গো এবং আমি হোস্ট যুক্ত করার চেষ্টা চালিয়ে যাচ্ছি

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.yourdomain.com', '*', '127.0.1.1']

এবং আমি একই ত্রুটি বা (400) খারাপ অনুরোধ পেয়েছি এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমি ইউআরএলটি 127.0.1.1.1(( ব্যবহৃত পোর্ট) / প্রকল্প এবং ভয়েলাতে পরিবর্তন করব!

আপনার ভার্চুয়াল নেটওয়ার্ক ঠিকানাটি আপনাকে কী তা পরীক্ষা করতে হবে, আমার জন্য লিনাক্সে আমি বিটনামি জাঙ্গো স্ট্যাক ২.২.৩-১ ব্যবহার করি আমি কোন পোর্ট জাঙ্গো ব্যবহার করছে তা যাচাই করতে পারি। যদি আপনার একটি ত্রুটি (400 খারাপ অনুরোধ) থাকে তবে আমি অনুমান করি যে বিভিন্ন ভার্চুয়াল নেটওয়ার্কে জাঙ্গো .. শুভকামনা এখানে চিত্র বর্ণনা লিখুন


0

সঙ্গে DEBUG = Falseআপনি সেটিংস ফাইল, এছাড়াও আপনি ALLOWED_HOST তালিকাটি সেট আপ প্রয়োজন। সহ চেষ্টা করুনALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']

অন্যথায় আপনি জাঙ্গো থেকে একটি খারাপ অনুরোধ (400) ত্রুটি পেতে পারেন।


0

আপনার সার্ভারকে ঠিক এইরকম - সুরক্ষার সাথে চালানোর চেষ্টা করুন:

পাইথন ম্যানেজ.পি রানসরভার --অনেকিউর


0

আমাকে প্রথমে অ্যাপাচি সার্ভারটি বন্ধ করতে হয়েছিল।

(ফে sudo systemctl stop httpd.service/ sudo systemctl disable httpd.service)।

এটি ' settings.py' ফাইল সম্পাদনা করার পাশাপাশি আমার সমস্যার সমাধান করেছে

প্রতি ALLOWED_HOSTS = ['se.rv.er.ip', 'www.example.com']


-4

সেটিংসে নেভিগেট করুন এবং base.py ফাইলটি সন্ধান করুন মঞ্জুরিপ্রাপ্ত হোস্টগুলিকে ALLOWED_HOSTS = ['*'] এ সেট করুন


4
গৃহীত উত্তরের পুনরাবৃত্তি করবেন না। পরিষ্কার ফোরাম রাখতে এটি মুছুন
উডচপার

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