問題
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();
});
});
|