servicestack,Cors,servicestack" /> servicestack,Cors,servicestack" />

ServiceStack Javascript/Typescript客户端和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 “包括” 没有身份

根据文档,我认为这是启用CORS所需的唯一一行:

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=“省略”如果您不知道某些配置所包含的内容,请不要包含它,只需使用每个库中嵌入的默认值。此外,这本应是一个新问题,但您已将其添加为答案。答案应回答本页顶部提出的具体问题,他们不应提出新问题,请为将来的新问题打开新问题。