私はデフォルトwebapi ApplicationOAuthProvider
以下のコードを使用してログインしています。 Web.configでwebapi 2.0クロスオリジンの動作
<add name="Access-Control-Allow-Origin" value="*" />
を追加し、クライアントはwww.testapi.com/tokenからログインできます。 すべて正常に動作します。
しかし、私はカスタムwebapi関数を作成します。それでも私はアクセス元制御を有効にするように依頼しています。だから私は、それは、プロンプトエラー複数の値 『http://www.myweb.com:82、*』「アクセス制御 - 許可 - 起源ヘッダが含まれている」
を言ってWebapiConfig.cs
EnableCorsAttribute cors = new EnableCorsAttribute("http://www.myweb.com:82", "*", "*"); config.EnableCors(cors);
この時間にこのコード行を追加することで、そう1つだけが許可されます。 Origin 'http://www.myweb.com:82'はアクセスできません。
私はweb.configの<add name="Access-Control-Allow-Origin" value="*" />
を削除して動作します。
私はログインに戻り、<add name="Access-Control-Allow-Origin" value="*" />
を追加するよう求めています。しかし、私はこれを追加する場合私のwebapiメソッドは呼び出すことができません。
私は追加しません。クライアントはログインできません。
両方の方法がありますか? は、エラーのある200の応答です。
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
// In production mode set AllowInsecureHttp = false
AllowInsecureHttp = true
};
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);//as instructed
webapiconfig.cs
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));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
WebApiConfig.Register(config);
config.EnableCors(new EnableCorsAttribute("*", "*", "GET, POST, OPTIONS, PUT, DELETE"));
//var jsonp = new JsonpMediaTypeFormatter(config.Formatters.JsonFormatter);
//config.Formatters.Insert(0, jsonp);
}
}
に次の行を追加します
WebApiConfig
に以下の行は、あなたのAPIコントローラー '[EnableCors(起源でこれを追加します。 "*"、ヘッダー: "*"、メソッド: "*"、exposedHeaders: "X-My-Header") 'これはコントローラー・レベルです。コアを有効にするには、特定のアクションメソッドで同じものを追加できます。 –これはまだ同じエラーが表示されています "1つだけ許可されています。私はweb.configのアクセス元を削除しませんでした。 –