Web APIプロジェクトでCORSを理解し、有効にするのは非常に難しいです。私はブロッキングポイントにヒットしました。私は、ASP.NET IDを持つASP.NET MVC Web Api 2プロジェクトを開始しました。私が何をしてもうまくいかないようです。Web api 2.0でCorsが動作しません
私はglobal.asx
ファイルを削除したし、私のスタートアップが次のようになります。
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration configuration = new HttpConfiguration();
// I'm not sure it this is the proper way to use webapiconfig
WebApiConfig.Register(configuration);
app.UseWebApi(configuration);
app.UseCors(CorsOptions.AllowAll);
ConfigureAuth(app);
}
}
とWebApiConfig.Registerコードは次のとおりです。
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.AddODataQueryFilter();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
RegisterModels(); //Automapper here
}
私は、MCのASPNET CORSとMicrosoft owinホストを持っていますシステムWebがインストールされています。 "[アセンブリ:OwinStartup(typeof演算(MyProject.Startup))]" web.config
に私が持っている場所にされ、そして:
<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
</appSettings>
私だけ呼んでapp.UseCors(CorsOptions.AllowAll)がCORSを有効にするために、他config.enableCors
または何か他のもののような方法はありませんが、私はAPIにトークンまたは何かを取得しようとするたびに、私はエラーを取得する:
Reason: CORS header ‘Access-Control-Allow-Origin’ missing.
私はConfiguration
メソッドにブレークポイントを入れて試してみましたが、それは呼び出されません。 ..まったく。私はIIS Expressでデバッグしています。
それは私のために働いた唯一の解決策です。ありがとう! – alvipeo
本当にありがとうございます。プロダクションデプロイメントのために何をすべきですか? – Lobato
こんにちはロバート、どこから来たのか分かっていれば、そのサイトの原点で*を変更してください。 *は「どこでも」を意味するためです。また、いくつかのapisは原点の外から 'GET'しか許さず、CRUD操作にツールを使わなければなりません。ブラウザー固有の値によって上書きされるため、変更する 'Access-Control-Max-Age'を無視することができます。 (Chromeでは10分以内)。 –