IIS7 এ ক্রস-অরিজিন রিসোর্স ভাগ করে নেওয়া সক্ষম করে


89

আমি সম্প্রতি অন্য ডোমেনে জাভাস্ক্রিপ্টের অনুরোধগুলি পোস্ট করার চেষ্টা করেছি। ডিফল্টরূপে অন্যান্য ডোমেনগুলিতে এক্সএইচআর পোস্ট করার অনুমতি নেই।

Http://enable-cors.org/ এর নির্দেশাবলী অনুসরণ করে , আমি এটি অন্য ডোমেনে সক্ষম করেছি।

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
    </customHeaders>
  </httpProtocol>
 </system.webServer>
</configuration>

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

সবকিছু এখন ঠিকঠাক কাজ করে তবে এটি 200 টি প্রতিক্রিয়া পাঠানোর আগে 405 টি প্রতিক্রিয়া ফিরে আসবে।

Request URL:http://testapi.nottherealsite.com/api/Reporting/RunReport
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Access-Control-Request-Headers:origin, content-type, accept
Access-Control-Request-Method:POST
Connection:keep-alive
Host:testapi.nottherealsite.com
Origin:http://test.nottherealsite.com
Referer:http://test.nottherealsite.com/Reporting
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Response Headersview source
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:*
Allow:POST
Cache-Control:private
Content-Length:1565
Content-Type:text/html; charset=utf-8
Date:Tue, 18 Sep 2012 14:26:06 GMT
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

আপডেট: 3/02/2014

এমএসডিএন ম্যাগাজিনে সম্প্রতি আপডেট হওয়া নিবন্ধ রয়েছে। ASP.NET ওয়েব এপিআই 2 তে CORS সহায়তা বিশদ বিবরণ।

http://msdn.microsoft.com/en-us/magazine/dn532203.aspx


এটি jQuery বুটগ্রিড প্লাগইন এর মিথ্যা সাজানোর আইকন পেয়ে আমার সমস্যা সমাধান করেছে বুটস্ট্র্যাপ ফন্ট ফোল্ডার থেকে গ্লাইফিকনস-হাফলিংস-রেগুলার.ওয়ফ করুন
ইমান

উত্তর:


77

এটি সম্ভবত আপনার অ্যাপ্লিকেশনটিকে নির্দিষ্ট করে দেওয়ার পরিবর্তে আইআইএস 7 টি এইচটিটিপি বিকল্পগুলির প্রতিক্রিয়াটিকে 'পরিচালনা' করার একটি ক্ষেত্রে রয়েছে is এটি নির্ধারণ করতে, আইআইএস 7 এ,

  1. আপনার সাইটের হ্যান্ডলার ম্যাপিংগুলিতে যান।

  2. 'অপশনসবার্বহ্যান্ডলার' এ স্ক্রোল করুন।

  3. 'প্রোটোকলসপুটমডিউল'টিকে' ইসপিপি হ্যান্ডলার 'এ পরিবর্তন করুন

  4. এক্সিকিউটেবল সেট করুন:% উইন্ডির% \ মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক \ v4.0.30319 \ aspnet_isapi.dll

এখন, HTTP বিকল্প বিকল্প ক্রিয়া প্রেরণ করা হলে উপরের আপনার কনফিগার এন্ট্রিগুলি কিক করা উচিত।

বিকল্পভাবে আপনি আপনার প্রারম্ভিকরণ পদ্ধতিতে HTTP অপশন ক্রিয়াতে প্রতিক্রিয়া জানাতে পারেন।

    protected void Application_BeginRequest(object sender,EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

        if(HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            //These headers are handling the "pre-flight" OPTIONS call sent by the browser
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000" );
            HttpContext.Current.Response.End();
        }

    }

4
আমি উভয় পদ্ধতি চেষ্টা করেছিলাম, তবে কেবলমাত্র আমার জন্য বিগ্রেইন্টারইয়েস্ট পদ্ধতি কাজ করে। ধন্যবাদ @ সাহা
বাসন্ত বি পান্ডে

আমার জন্য, ওপিকে একভাবেই ওয়েলকনফিগের সাথে এটি যুক্ত করা। গ্লোবাল.এক্সএক্স / বিগিনিউয়ের কাজ করেনি।
twDuke

4
2 দিন গবেষণার পরে, সমস্যার সমাধানের Application_BeginRequestএকমাত্র উপায় ছিল এর ভিত্তিতে বিকল্প সমাধান ব্যবহার করা । আমি customHeaders( স্ট্যাকওভারফ্লো.com / a / 19091291 / 827168 ) ব্যবহার করে OPTIONSVerbHandlerহ্যান্ডলার অপসারণ, WebDAVমডিউল এবং হ্যান্ডলার অপসারণ ( স্ট্যাকওভারফ্লো.com / a / 20705500 / 827168 ) ব্যবহার করে অন্যান্য পদ্ধতির চেষ্টা করেছি কিন্তু কোনওটিই আমার পক্ষে কার্যকর হয়নি। আশা করি এটি অন্যকে সহায়তা করবে। এবং আপনার উত্তরের জন্য @ মেন্ডাককে ধন্যবাদ!
পোমেহ

21
অভিশাপ এএসপি.এনইটি এবং আইআইএস। সিওআরএসের মতো সাধারণ ধারণাটি কনফিগার করা এত কঠিন হওয়া উচিত কেন? এটা সত্যিই সহজ। কেবল ডাব্লু 3 সি এর স্পেসিফিকেশন পড়ুন। আপনি এটি 10 ​​মিনিটের মধ্যে শিখতে পারেন, এবং তারপরে এএসপি.এনইটি এবং আইআইএসে এটি কীভাবে কনফিগার করা যায় তা নির্ধারণ করার জন্য আপনার 10 দিনের প্রয়োজন।
সাইদ নেমতি

4
@ মেনধাক, আপনি আমার জীবন বাঁচাবেন আমি যুক্ত করা কেবলমাত্র জিনিস সর্বদা HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");ভাগ করা প্রমাণীকরণ কুকির কারণে ছিল ।
Nexxas

26

আমি মন্তব্য পোস্ট করতে পারছি না তাই আমাকে এটির একটি পৃথক উত্তরে রাখতে হবে, তবে এটি শাহের গৃহীত উত্তরের সাথে সম্পর্কিত।

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

আমি এর পরিবর্তে আমার ওয়েবকনফিগের অপশনসবার্বহ্যান্ডলার অপসারণ করে শেষ করেছি।

<handlers>
    <remove name="OPTIONSVerbHandler"/>
</handlers>

16
যারা প্রতিদিন ওয়েব কন্টিগগ নিয়ে সপ্তাহে না তাদের জন্য এটি "<system.webServer>"
সিমেন্টিক

20

আইসিসি 7 অপশন সার্ভিসে HTTP অপশন সার্ভিস স্থাপনে খুব সহায়ক হতে আমি http://help.infragics.com/Help/NetAdantage/jQuery/2013.1/CLR4.0/html/igOlapXmlaDataSource_Configuring_IIS_for_Cross_Domain_OLAP_Data.html পাওয়া তথ্য পেয়েছি ।

আমি নিম্নলিখিতগুলিকে আমার ওয়েবকনফাইগের সাথে যুক্ত করেছি এবং তারপরে আইআইএস 7 'হ্যান্ডার ম্যাপিংস' তালিকায় অপশন অপার্বহ্যান্ডলারকে তালিকার শীর্ষে স্থানান্তরিত করেছি। আমি হ্যান্ডলার ম্যাপিংস বিভাগে হ্যান্ডলারে ডাবল ক্লিক করে 'অনুরোধ বিধিনিষেধসমূহ' এবং তারপরে অ্যাক্সেস ট্যাবে ক্লিক করে অপশনও সার্ভার হ্যান্ডার পড়ার অ্যাক্সেস দিয়েছি।

দুর্ভাগ্যক্রমে আমি খুব দ্রুত খুঁজে পেয়েছি যে আইআই তাদের XDomainRequest অবজেক্টে টেক্সট / এক্সএমএল-এ কনটেন্ট-টাইপ সেট করা এবং একটি SOAPAction শিরোনাম যোগ করা সমর্থন করে না বলে মনে হয় ।

আমি কীভাবে এটি হ্যান্ডেল করব তা সন্ধানের জন্য দিনের একটি ভাল অংশ ব্যয় করায় এটি ভাগ করে নিতে চেয়েছিলাম।

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
            <add name="Access-Control-Allow-Headers" value="Content-Type, soapaction" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

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

দেখে মনে হচ্ছে ক্রোমের বর্তমান সংস্করণটি ত্রুটির HTTP স্থিতির প্রতিক্রিয়ায় গৃহীত কর্ড শিরোনামগুলিকে আর গ্রহণ করবে না। সুতরাং এটি আর এই ক্ষেত্রে চলবে না এবং ক্রস-ডোমেন অনুরোধটি সম্পাদন করবে। এটি একটি ভাল আচরণ ইমো।
ফ্রেডেরিক

4
এই প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ। যদি আপনি উপরের প্রতিক্রিয়াটি স্কিম করে থাকেন তবে উপরে বর্ণিত রূপ হিসাবে অপশনস ভার্বহ্যান্ডার পড়ার অ্যাক্সেস দিতে ভুলবেন না।
জন মেয়ার

এটি কোনও উত্স নির্দিষ্ট করা নিরাপদ। চেহারা: <add name="Access-Control-Allow-Origin" value="http://my.origin.host" />
গ্যাব্রিয়েল সিমাস

9

405 প্রতিক্রিয়া একটি "অনুমোদিত নয় পদ্ধতি" প্রতিক্রিয়া। মনে হচ্ছে আপনার সার্ভারটি সিওআরএস প্রিফলাইট অনুরোধগুলি পরিচালনা করতে সঠিকভাবে কনফিগার করা হয়নি। আপনার দুটি জিনিস করা দরকার:

1) HTTP বিকল্পগুলির অনুরোধের প্রতিক্রিয়া জানাতে IIS7 সক্ষম করুন। আপনি 405 পাচ্ছেন কারণ আইআইএস 7 বিকল্পগুলির অনুরোধটি প্রত্যাখ্যান করছে। আমি আইআইএস with এর সাথে পরিচিত না হওয়ায় এটি কীভাবে করব তা আমি জানি না, তবে স্ট্যাক ওভারফ্লোতে সম্ভবত এমন আরও অনেকে আছেন যারা করেন।

2) CORS প্রিফলাইট অনুরোধের প্রতিক্রিয়া জানাতে আপনার অ্যাপ্লিকেশনটি কনফিগার করুন। আপনি নীচে নিম্নলিখিত দুই লাইন যোগ করে এটা করতে পারেন Access-Control-Allow-Originলাইন <customHeaders>অধ্যায়:

<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />

Access-Control-Allow-Headersআপনার অনুরোধটি কী শিরোনাম চেয়েছে তার ভিত্তিতে আপনাকে বিভাগে অন্যান্য মান যুক্ত করতে হতে পারে । একটি অনুরোধ করার জন্য আপনার কাছে নমুনা কোড রয়েছে?

আপনি এখানে সিওআরএস এবং সিওআরএস প্রিফলাইট সম্পর্কে আরও শিখতে পারেন: http://www.html5rocks.com/en/tutorials/cors/


9

একটি মৌলিক সমাধানের জন্য যা প্রয়োজন তার খুব কাছেই ডেভিডজি উত্তর থেকে বিশদ বিবরণ :

  • প্রথমে। নেট হ্যান্ডলারের আগে কার্যকর করতে অপশনসবার্বহ্যান্ডলারটি কনফিগার করুন।

    1. আইআইএস কনসোলে "হ্যান্ডলার ম্যাপিংস" নির্বাচন করুন (হয় সার্ভার স্তর বা সাইট স্তরে; সতর্ক হন যে সাইট স্তরে এটি আপনার সাইটের জন্য সমস্ত হ্যান্ডলারকে নতুন করে সংজ্ঞায়িত করবে এবং এর পরে সার্ভার স্তরে যে কোনও পরিবর্তন আনা হবে; এবং অবশ্যই সার্ভার স্তরে, অপশন ক্রিয়াটির নিজস্ব হ্যান্ডলিংয়ের প্রয়োজন হলে এটি অন্যান্য সাইটগুলি ভেঙে ফেলতে পারে)।
    2. অ্যাকশন ফলকে, "অর্ডার করা তালিকা দেখুন ..." নির্বাচন করুন বিকল্পগুলি সার্ভারহ্যান্ডলার অনুসন্ধান করুন এবং এটিকে সরিয়ে দিন (প্রচুর ক্লিক ...)।

    ওয়েব হ্যান্ডলারের অধীনে সমস্ত হ্যান্ডলারকে নতুন করে সংজ্ঞায়িত করে আপনি এটি ওয়েবকনফাইগেও করতে পারেন <system.webServer><handlers>( <clear>তারপরে <add ...>ফিরে আসুন, এটি আপনার জন্য আইআইএস কনসোলটি কী)) (উপায় দ্বারা, এই হ্যান্ডলারের উপর "পড়ার" অনুমতি চাইতে হবে না))

  • দ্বিতীয়ত, আপনার কর প্রয়োজনীয়তার জন্য কাস্টম HTTP শিরোনামগুলি কনফিগার করুন, যেমন:

    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*"/>
          <add name="Access-Control-Allow-Headers" value="Content-Type"/>
          <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    

    আপনি এটি আইআইএস কনসোলেও করতে পারেন।

এটি একটি প্রাথমিক সমাধান কারণ এটি অনুরোধে এমনকি কর্ড শিরোনাম প্রেরণ করবে যা এর প্রয়োজন নেই। তবে ডাব্লুসিএফের সাথে দেখে মনে হচ্ছে এটি সর্বাধিক সহজতম।

এমভিসি বা ওয়েবাপির সাহায্যে আমরা বিকল্পের ক্রিয়াটি এবং কর্ড শিরোনামগুলি কোডের মাধ্যমে পরিচালনা করতে পারি (হয় "ম্যানুয়ালি" বা ওয়েবপির সর্বশেষ সংস্করণে বিল্ট-ইন সমর্থন সহ)।


এটি আমার পক্ষে কাজ করেছে। আমি পছন্দ করি না যে প্রতিটি হ্যান্ডলারটি ওয়েবকনফাইগে নতুন সংজ্ঞায়িত হয়ে শেষ হয় তবে হতাশায় এটি মনে হয় আমাদের ডাব্লুসিএফ পরিষেবাদি CORS সক্ষম করার জন্য আমার যা করা দরকার। +1
মানি

3

ASP.net ওয়েব এপিআই 2 দিয়ে নুগেটের মাধ্যমে মাইক্রোসফ্ট এএসপি.নেট ক্রস অরিজিন সমর্থন ইনস্টল করুন।

http://enable-cors.org/server_aspnet.html

public static void Register(HttpConfiguration config)
{
 var enableCorsAttribute = new EnableCorsAttribute("http://mydomain.com",
                                                   "Origin, Content-Type, Accept",
                                                   "GET, PUT, POST, DELETE, OPTIONS");
        config.EnableCors(enableCorsAttribute);
}

আপনি কি জানেন যে programmatically"আরজিইন" এর প্রথম প্যারামিটার সেট করা আছে কিনা EnableCorsAttribute? আসুন এখানে রেজিস্টারে না বলুন, তবে প্রতিটি পৃথক এইচটিটিপি অনুরোধের জন্য যা আসে। এটি যে উত্সটি এসেছে তা নির্ধারণ করুন, এটি ঠিক আছে কিনা তা নিশ্চিত করুন (অনুমোদিতদের কিছু তালিকার বিরুদ্ধে পরীক্ষা করুন) তারপরে একটি প্রতিক্রিয়া ফিরিয়ে দিন Access-Allow-Control-Origin="thatdomain.com"? @ অ্যান্ড্রু
মার্ক পাইসাক - ট্রিলন.ও

3

আমার জন্য সমাধানটি যুক্ত করা ছিল:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule"/>
    </modules>
</system.webServer>

আমার ওয়েব কনফিগ


2

আলসালাম আলেকুম।

প্রথম উপায় হ'ল এই লিঙ্কে থাকা নির্দেশাবলী অনুসরণ করা:

http://help.infragics.com/Help/NetAdantage/jQuery/2013.1/CLR4.0/html/igOlapXmlaDataSource_Configuring_IIS_for_Cross_Domain_OLAP_Data.html

যা এই কনফিগারেশনের সাথে মিলে যায়:

<handlers>
  <clear />
  <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" type="" modules="ProtocolSupportModule" scriptProcessor="" resourceType="Unspecified" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
  <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="4194304" />
  <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="4194304" />
  <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" modules="ManagedPipelineHandler" scriptProcessor=""
  resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />
  <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32"
  responseBufferLimit="4194304" />
  <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" modules="ManagedPipelineHandler"
  scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />
  <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32"
  responseBufferLimit="4194304" />
  <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" modules="ManagedPipelineHandler"
  scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />
  <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32"
  responseBufferLimit="4194304" />
  <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" modules="ManagedPipelineHandler" scriptProcessor=""
  resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="ISAPI-dll" path="*.dll" verb="*" type="" modules="IsapiModule" scriptProcessor="" resourceType="File" requireAccess="Execute" allowPathInfo="true" preCondition="" responseBufferLimit="4194304" />
  <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="0" />
  <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" modules="ManagedPipelineHandler"
  scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0"
  responseBufferLimit="4194304" />
  <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" modules="ManagedPipelineHandler"
  scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" modules="ManagedPipelineHandler"
  scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="4194304" />
  <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"
  allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="classicMode,runtimeVersionv4.0,bitness32"
  responseBufferLimit="0" />
  <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="TRACEVerbHandler" path="*" verb="TRACE" type="" modules="ProtocolSupportModule" scriptProcessor="" resourceType="Unspecified" requireAccess="None" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false"
  preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
  <add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304"
  />
</handlers>

দ্বিতীয় উপায়টি হ'ল আপনার বিগিনিউকেষ্ট পদ্ধতিতে HTTP অপশন ক্রিয়াটির প্রতিক্রিয়া জানানো।

  protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Request-Method", "GET ,POST, PUT, DELETE");

        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Origin,Content-Type, Accept");
        HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "86400"); // 24 hours
        HttpContext.Current.Response.End();
    }
}

2

ব্যবধানগুলি শনাক্ত করতে এবং এই সমস্যাটি সমাধান করতে একটি ব্যান্ড আউট-ব্যান্ড সিওআরএস মডিউল পাঠাতে মাইক্রোসফ্টকে কয়েক বছর সময় লেগেছে।

  1. মাইক্রোসফ্ট থেকে মডিউল ইনস্টল করুন
  2. স্নিপেটগুলি দিয়ে এটি কনফিগার করুন

নীচের হিসাবে

<configuration>
    <system.webServer>
        <cors enabled="true" failUnlistedOrigins="true">            
            <add origin="http://*" allowed="true" />
        </cors>
    </system.webServer>
</configuration>

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

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


0

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

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*"/>
    <add name="Access-Control-Allow-Headers" value="Content-Type"/>
    <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
  </customHeaders>
</httpProtocol>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.