আকর্ষণীয় প্রশ্ন। response headersআইআইএস থেকে অপসারণের সমস্ত পদ্ধতিগুলি শিরোনাম Allowএবং Publicশিরোলেখীদের পক্ষে কাজ করে না বলে মনে হয় , একটি OPTIONSঅনুরোধ সর্বদা ফিরে আসে:
Allow: OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST
সার্ভার আসলে যা অনুমতি দেয় তা নির্বিশেষে।
আইআইএস-এর সমস্ত অনুরোধগুলি মডিউল দ্বারা পরিচালিত হয়, OPTIONSঅনুরোধগুলি হ্যান্ডেল করা হয় ProtocolSupportModuleযা প্রয়োজনীয় নয় এবং এটি বেশ বোবা বলে মনে হচ্ছে।
যদি আমরা সেই মডিউলটি সরিয়ে ফেলি, সার্ভার আর বিকল্পগুলির অনুরোধের সাড়া দেয় না, যা আপনি এখনও সমর্থন করতে চান, সুতরাং সেগুলির উত্তর দেওয়ার জন্য আমাদের আরও একটি মডিউল ব্যবহার করতে হবে।
খুলুন:
%SystemRoot%\System32\inetsrv\config\applicationHost.config
এবং OPTIONSVerbHandlerসেই লাইনের মন্তব্যের জন্য অনুসন্ধান করুন এবং আপনি এটির উপরে থাকাকালীন উপরেরটিও ( TRACEVerbHandler)। এখন একটি নতুন নোড যুক্ত করুন:
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
পুরো ব্লকটি দেখতে এইরকম হওয়া উচিত:
<!-- <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> -->
<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />
এখন স্ট্যাটিকফাইমডিউড OPTIONSঅনুরোধগুলি প্রক্রিয়া করবে তবে এটি কোনও সামগ্রী ফেরত দেবে না।
আপনি যদি এখন OPTIONSসার্ভারে একটি অনুরোধ করেন তবে আপনি একটিও শিরোনাম পাবেন Allowনা Public, আপনি এগুলিকে সহজেই ওয়েবকনফাইগে যুক্ত করতে পারেন
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Allow" value="GET,POST,HEAD" />
<add name="Public" value="GET,POST,HEAD" />
</customHeaders>
</httpProtocol>
</system.webServer>
এখন আপনার OPTIONSঅনুরোধগুলি যেমন প্রয়োজন তেমন কাজ করে তবে এই অতিরিক্ত শিরোনামগুলি এমন কোনও GETবা POSTঅনুরোধের সাথে প্রেরণ করা হয় যা আমার মনে হয় এখনও বৈধ HTTP।
আপনি যদি OPTIONSঅনুরোধগুলির জন্য কেবল এই শিরোলেখ ব্যবহার করতে চান তবে আপনি একটি সহজ HTTP মডিউল লিখতে পারেন যা এই শিরোনামগুলি সেট করে এবং আমি উপরে ব্যবহৃত স্ট্যাটিকফাইলে মডুলের পরিবর্তে এটি ব্যবহার করতে পারি।