[解決済み】ASP.Net MVCでAccess-Control-Allow-Originを設定する - 最もシンプルな方法
2022-04-07 15:30:39
質問
私はいくつかのjsonを返す単純なactionmethodを持っています。これは、ajax.example.comで実行されます。私は別のサイトsomeothersite.comからこれにアクセスする必要があります。
呼び出そうとすると、期待通りの......。
Origin http://someothersite.com is not allowed by Access-Control-Allow-Origin.
これを回避する方法は2つ知っています。 JSONP を作成し カスタムHttpHandler を使用します。 ヘッダを設定します。
もっと簡単な方法はないのでしょうか?
単純なアクションで、許可された起源のリストを定義することはできないのでしょうか? アクションフィルターとか?
最適なのは......。
return json(mydata, JsonBehaviour.IDontCareWhoAccessesMe);
解決方法は?
ASP.NET MVC コントローラの場合
新しい属性を作成する
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
base.OnActionExecuting(filterContext);
}
}
アクションをタグ付けします。
[AllowCrossSiteJson]
public ActionResult YourMethod()
{
return Json("Works better?");
}
ASP.NET Web API用
using System;
using System.Web.Http.Filters;
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Response != null)
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
base.OnActionExecuted(actionExecutedContext);
}
}
APIコントローラ全体をタグ付けします。
[AllowCrossSiteJson]
public class ValuesController : ApiController
{
または個別のAPIコール。
[AllowCrossSiteJson]
public IEnumerable<PartViewModel> Get()
{
...
}
Internet Explorer v9の場合
IE <= 9はCORSをサポートしていません。私は、これらのリクエストを自動的にプロキシ経由でルーティングするJavaScriptを書きました。すべて100%透過的です(私のプロキシとスクリプトを含めるだけです)。
nugetでダウンロードする
corsproxy
をクリックし、同梱の説明書に従ってください。
関連
-
[解決済み】「Access-Control-Allow-Origin」ヘッダが複数の値を含む場合
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
[解決済み] UnicodeDecodeError: 'utf8' コーデックは位置3131のバイト0x80をデコードできません: 不正なスタートバイトです
-
[解決済み] VSCodeでlaunch.jsonに環境変数を追加する方法
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] Access-Control-Allow-Origin複数オリジンのドメイン?
-
[解決済み] REST APIからデータを取得しようとしたときに、要求されたリソースに'Access-Control-Allow-Origin'ヘッダーが存在しない。
-
[解決済み] file:// URLから実行されるアプリケーションのリクエストで、"Origin null is not allowed by Access-Control-Allow-Origin" エラーが発生する。
-
[解決済み] アクセス制御-許可-起源のワイルドカードサブドメイン、ポート、プロトコル
-
[解決済み】リクエストヘッダーフィールドのAccess-Control-Allow-Headersが許可されない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSON文字列をjqを使用してテーブルとしてフォーマットする方法は?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み】GoでJSONのPost Requestを処理する
-
[解決済み】Goの構造体をJSONに変換する
-
[解決済み】JSON用のクエリ言語はありますか?
-
[解決済み】Github WikiでJSONブロックをスタイルする方法は?
-
[解決済み】ASP.Net MVCでAccess-Control-Allow-Originを設定する - 最もシンプルな方法
-
[解決済み】JSONデータからJSONスキーマを生成するツール【終了しました
-
[解決済み】JSONは"["で始めることができますか?
-
[解決済み】REST API - ファイル(画像)処理 - ベストプラクティス