ASP.NET SignalRコアに遭遇したCORSの問題を使用して

問題

asp.net MVCのコア手続きに統合signalrは、公式デモの構成に応じて完了ですが、接続はデモページには、以下の情報が表示されます使用して確立されています。

1
access to xmlhttprequest at  'http://localhost:8090/signalr-mychathub/negotiate' from origin  'null' has been blocked by cors policy: response to preflight request doesn 't pass access control check: the value of the ' access-control-allow-origin ' header in the response must not be the wildcard ' * ' when the request' s credentials mode  is 'include' . the credentials mode of requests initiated by the xmlhttprequest  is controlled by the withcredentials attribute.

オリジナルコード:

1
2
3
4
5
6
7
8
9
10
services.addcors(op =>
{
     op.addpolicy(monitorstartupconsts.defaultcorspolicyname,  set =>
     {
         set .allowanyorigin()
            .allowanyheader()
            .allowanymethod()
            .allowcredentials();
     });
});

理由

ポリシーが正しく設定により、CORSは私が起源のすべてのソースを許可する元の設定の原因となっているため、問題が発生します。しかし、制限のために2.2、使用不可能dotnetcore  allowanyorigin() +の  allowcredentials() 組み合わせを、唯一の明示的起源のソースを指定するか、次のように間接的な影響。

解きます

で、CORSの設定を変更して  corspolicybuilder 検証ロジックを設定するための方法を提供します。メソッド名が呼ばれ  setisoriginallowed(func<string, bool> isoriginallowed)、検証が返された場合、手数料は、入ってくるソースの起源を検証します  true

ここでは、ちょうど常に返すように設定する必要があり  true ます。
次のように最終的なコードです。

1
2
3
4
5
6
7
8
9
10
services.addcors(op =>
{
     op.addpolicy(monitorstartupconsts.defaultcorspolicyname,  set =>
     {
         set .setisoriginallowed(origin =>  true )
            .allowanyheader()
            .allowanymethod()
            .allowcredentials();
     });
});

おすすめ

転載: www.cnblogs.com/Justsoso-WYH/p/11353412.html