ServiceStack Javascript/Typescript客户端和CORS
根据文档,我认为这是启用CORS所需的唯一一行:ServiceStack Javascript/Typescript客户端和CORS,cors,
servicestack,Cors,
servicestack,根据文档,我认为这是启用CORS所需的唯一一行: Plugins.Add(new-CorsFeature()) 然后从另一个网站: var client = new JsonServiceClient('https://my-app.azurewebsites.net'); client.get(new something()); 返回的错误为: 对飞行前请求的响应未通过访问控制检查: 响应中“访问控制允许凭据”标头的值 为“”,当请求的凭据模式为“”时,该值必须为true “包括” 没有身份
Plugins.Add(new-CorsFeature())代码>
然后从另一个网站:
var client = new JsonServiceClient('https://my-app.azurewebsites.net');
client.get(new something());
返回的错误为:
对飞行前请求的响应未通过访问控制检查:
响应中“访问控制允许凭据”标头的值
为“”,当请求的凭据模式为“”时,该值必须为true
“包括”
没有身份验证,我正在使用所有默认设置,JsonServiceClient调用其他服务器的设置中缺少什么?公司功能的默认设置未启用允许凭据。尝试将服务器更改为以下内容
Plugins.Add(new CorsFeature(allowCredentials: true));
如果您试图访问需要发送凭据的端点,则客户端将需要包含凭据
编辑:
考虑到(我认为)您正试图从另一个域git一个经过身份验证的端点,下面是一个我用来做同样事情的示例。域已被更改
Plugins.Add(new CorsFeature(
allowCredentials: true,
allowedHeaders: "Content-Type, Allow, Authorization, Origin",
allowOriginWhitelist: new[]
{
"https://example.com",
"https://api.example.com",
"https://www.example.com",
"http://dev.example.com"
}
));
CorsFeature
的默认值未启用允许凭据。尝试将服务器更改为以下内容
Plugins.Add(new CorsFeature(allowCredentials: true));
如果您试图访问需要发送凭据的端点,则客户端将需要包含凭据
编辑:
考虑到(我认为)您正试图从另一个域git一个经过身份验证的端点,下面是一个我用来做同样事情的示例。域已被更改
Plugins.Add(new CorsFeature(
allowCredentials: true,
allowedHeaders: "Content-Type, Allow, Authorization, Origin",
allowOriginWhitelist: new[]
{
"https://example.com",
"https://api.example.com",
"https://www.example.com",
"http://dev.example.com"
}
));
问题最终出现在JsonServiceClient上。我不得不将凭证设置为省略
client.credentials=“omit”
问题最终出现在JsonServiceClient上。我不得不将凭证设置为省略
client.credentials=“omit”
我按照上述方式配置了服务:
Plugins.Add(new CorsFeature(
allowCredentials: true,
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",
allowedHeaders: "Content-Type, Allow, Authorization, Origin",
allowOriginWhitelist: new[]
{
"http://localhost:4200",
"http://localhost:63342",
"http://localhost:63342",
"http://localhost:3000",
"http://my.site.com"
}));
我有两个函数Login()和GetContacts()
“servicestack客户端”:“0.0.30”
我依次调用这些函数:
1. Login()
2. ContactsGet()
登录运行正常,但在Internet Explorer和Safari ContactsGet中失败,它返回401状态,但在Chrome中工作
请问我的错误是什么?
谢谢
更新
IIS设置
我按照上述方式配置了服务:
Plugins.Add(new CorsFeature(
allowCredentials: true,
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",
allowedHeaders: "Content-Type, Allow, Authorization, Origin",
allowOriginWhitelist: new[]
{
"http://localhost:4200",
"http://localhost:63342",
"http://localhost:63342",
"http://localhost:3000",
"http://my.site.com"
}));
我有两个函数Login()和GetContacts()
“servicestack客户端”:“0.0.30”
我依次调用这些函数:
1. Login()
2. ContactsGet()
登录运行正常,但在Internet Explorer和Safari ContactsGet中失败,它返回401状态,但在Chrome中工作
请问我的错误是什么?
谢谢
更新
IIS设置
仍然不起作用:对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“包括”时,响应中“访问控制允许来源”标头的值不得为通配符“*”。因此,不允许访问源“https:/my-app2.azurewebsites.net”。
我已经更新了答案,将提供另一个白名单域的工作身份验证的完整示例。我也尝试过。我发现问题出在后端的不是CORS设置,而是前端的JsonServiceClient。我必须设置client.credentials=“omit”
。仍然不起作用:对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“include”时,响应中的“访问控制允许来源”头的值不能是通配符“*”。因此,不允许访问源“https:/my-app2.azurewebsites.net”。
我已经更新了答案,将提供另一个白名单域的工作身份验证的完整示例。我也尝试过。我发现问题出在后端的不是CORS设置,而是前端的JsonServiceClient。我必须设置client.credentials=“omit”
@layric请参阅本文。请升级到最新的v0.0.36版本,默认情况下其中包括Cookies。@mythz我将客户端更新为最新版本,如果我在IIS express works上本地运行,但当我部署到IIS服务器时,它不工作。请参阅有问题的更新。为什么要显式禁用Cookie<代码>this.client.credentials=“省略”代码>如果您不知道某些配置所包含的内容,请不要包含它,只需使用每个库中嵌入的默认值。此外,这本应是一个新问题,但您已将其添加为答案。答案应回答本页顶部提出的特定问题,不应提出新问题,请在以后提出新问题时打开新问题。@Layric请参阅本文。请升级到最新的v0.0.36版本,默认情况下其中包括Cookies。@mythz I将客户端更新为最新版本,若我在IIS express上本地运行,那个么它可以工作,但当我部署到IIS服务器时,它就不工作了。请参阅有问题的更新。为什么要显式禁用Cookie<代码>this.client.credentials=“省略”代码>如果您不知道某些配置所包含的内容,请不要包含它,只需使用每个库中嵌入的默认值。此外,这本应是一个新问题,但您已将其添加为答案。答案应回答本页顶部提出的具体问题,他们不应提出新问题,请为将来的新问题打开新问题。