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

Cors “;否';访问控制允许原点';标题存在”;用于将请求重定向到https://login.microsoftonline.com/

Cors “;否';访问控制允许原点';标题存在”;用于将请求重定向到https://login.microsoftonline.com/,cors,servicestack,Cors,servicestack,我正在尝试使用访问代码获取响应,并获得: XMLHttpRequest无法加载“h..://login.microsoftonline.com/d331431b-899c-4666-8094-e82e6bfc3964/oaut…身份验证%2faad&scope=user\u模拟和状态=033f4ad89a574135884fd3a03c1743ab”。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“” 使用了ServiceStack、CORS

我正在尝试使用访问代码获取响应,并获得:

XMLHttpRequest无法加载“h..://login.microsoftonline.com/d331431b-899c-4666-8094-e82e6bfc3964/oaut…身份验证%2faad&scope=user\u模拟和状态=033f4ad89a574135884fd3a03c1743ab”。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”

使用了ServiceStack、CORS和选项(无访问控制允许来源标题)中的所有建议。讨论:

增加:

Plugins.Add(new CorsFeature(new[] { "http://localhost/", "http://localhost:23589" },
            allowCredentials: true,
            allowedHeaders: "Content-Type, Allow, Authorization"));
甚至:

PreRequestFilters.Add((httpReq, httpRes) =>
{
     //if (httpReq.Verb == "OPTIONS")
     //{
     //    var origin = httpReq.Headers.Get("Origin");
     string origin = httpReq.Headers.Get("Origin");
     httpRes.AddHeader(HttpHeaders.AllowOrigin,  "*");
     httpRes.EndRequest();
     // }
});
还是不走运。我们正在使用ServiceStack版本4.0.56

请求URL

>

响应标题: 请求标头: 我还尝试在AppHost Confugure方法中添加以下代码:

 base.SetConfig(new HostConfig
            {
                GlobalResponseHeaders = {
                    { "Access-Control-Allow-Origin", "*" },
                    { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
                    { "Access-Control-Allow-Headers", "Content-Type" },
                },
            });
来自Fiddler: 请求标头: 响应标题:
删除url中的最后一个斜杠
“”

删除url中的最后一个斜杠

问题是因为您试图通过Ajax调用
/api/auth/aad
OAuth路由,而不是在页面中直接链接到它

您不能通过Ajax调用AAD OAuth路由,因为它重定向到的url用于捕获客户端授权(
https://login.microsoftonline.com/..
)不允许您看到的错误中指出的CORS


这不是ServiceStack CORS问题,您不需要它来与本地API对话(即
http://localhost:23589
),因为它与HTML页面位于同一域中。使用Ajax访问域外资源时需要CORS()(即
https://login.microsoftonline.com/..
)因为CORS不允许通过Ajax访问该url。

问题在于您试图通过Ajax调用
/api/auth/aad
OAuth路由,而不是在页面中直接链接到它

您不能通过Ajax调用AAD OAuth路由,因为它重定向到的url用于捕获客户端授权(
https://login.microsoftonline.com/..
)不允许您看到的错误中指出的CORS


这不是ServiceStack CORS问题,您不需要它来与本地API对话(即
http://localhost:23589
),因为它与HTML页面位于同一域中。使用Ajax访问域外资源时需要CORS()(即
https://login.microsoftonline.com/..
)因为它不允许CORS,所以不允许您通过Ajax访问该url。

正如mythz在回答中所解释的,CORS不允许从您的原始域访问。但是,您可以在Microsoft Azure(?)Active Directory中注册您的应用程序,以便它可以显示一个单独的登录对话框,该对话框将在身份验证成功后立即向您的应用程序返回回调


有关AAD登录流的更多信息(请注意,这是一个NodeJS示例,不是纯javascript,但应用相同的逻辑)请查看。

正如mythz在其回答中所解释的,CORS不允许来自您的原始域。但是,您可以在Microsoft Azure(?)Active Directory中注册您的应用程序,以便它可以显示一个单独的登录对话框,该对话框将在身份验证成功后立即向您的应用程序返回回调



有关AAD登录流的更多信息(请注意,这是一个NodeJS示例,不是纯javascript,但同样的逻辑适用)请查看。

您可以发布原始HTTP请求和响应头,您可以使用Chrome WebInspector或Fiddler获取它们。感谢您的回复。响应标头中没有“访问控制允许…”。访问控制允许标头:内容类型访问控制允许方法:GET、POST、PUT、DELETE、,选项访问控制允许来源:*当我直接呼叫我的AuthProvider时,一切正常,请求/响应看起来不同:请求URL:请求方法:获取状态代码:302找到远程地址:157.55.208.218:443来源引用者标题似乎不完整或损坏。源标题中的url应该与
Plugins.Add(new CorsFeature(new[])上添加的内容完全匹配http://localhost:23589“});
我用“/”试过了没有。错误消息有:。您可以发布原始HTTP请求和响应头吗?您可以使用Chrome WebInspector或Fiddler获取它们。感谢您的回复。没有:“允许访问控制…”在响应标题中。访问控制允许标题:内容类型访问控制允许方法:获取、发布、放置、删除,选项访问控制允许来源:*当我直接调用我的AuthProvider时,一切正常,请求/响应看起来不同:请求URL:请求方法:获取状态代码:302找到的远程地址:157.55.208.218:443de>Origin
Referer
标题似乎不完整或已损坏。Origin标题中的url应该与
插件上添加的内容完全匹配。添加(新公司功能(新[]{”http://localhost:23589“});
我尝试了使用“/”和不使用“/”。错误消息为:。感谢您的帮助,但它没有修复它:(你有h..p而不是http。我在localhost和chrome上也有问题,但在IE中因为IIS Expression而没有问题。我有h..p是因为我的帖子中不能有超过2个链接:-)抱歉,我还在学习,但我的意思是评论的其余部分谢谢你的帮助,但它没有修复它:(你有h..p而不是http。我在localhost和chrome上也有问题,但在IE中没有问题,因为IIS Express我有h..p,因为我的帖子中不能有超过2个链接:-)抱歉,我还在学习,但我是指我理解的其余注释。调用/api/auth/aad的正确方式是什么?我理解。调用/api/auth/aad的正确方式是什么?谢谢你的回答。我试图避免使用javascript库,如(adal和adal)
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
x-ms-request-id: d2531fb2-2e97-4940-a15d-f3c6f1cd5e7b
client-request-id: 376b2cb0-e1d2-4749-a8b5-adfee1b3ceba
X-Frame-Options: DENY
x-ms-gateway-service-instanceid: ESTSFE_IN_344
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
Set-Cookie: buid=AAABAAEAiL9Kn2Z27UubvWFPbm0gLfvzURnxA_SU_2fqg40MIAq5oFqJPcrl7iSuhLgh52CsEbHynIx5Krpov-SlQ7tVxK9O3EWPdKHzur0dQHXgfE4FLI6Vmv3-HwokZIpKbXA2IAA; expires=Fri, 02-Dec-2016 17:25:56 GMT; path=/; secure; HttpOnly
Set-Cookie: esctx=AAABAAAAiL9Kn2Z27UubvWFPbm0gLdbqNasFxQzD3cBv92w234pND-QPmCQNU9pfwexBLi9fullMTJbXyFHlgwaIpWQHx6OpBt9rHaIVDwlxaAh7MqFmsrHiMcoXcWy55B0veMpU10kthlQdtj37nLx1_p3ocBF3tMJ822MGbR2D-Epr8iTW2AmiL46Q2oxA9gHfuwYBIAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly
Set-Cookie: x-ms-gateway-slice=productiona; path=/; secure; HttpOnly
Set-Cookie: stsservicecookie=ests; path=/; secure; HttpOnly
X-Powered-By: ASP.NET
Date: Sun, 05 Jun 2016 17:25:55 GMT
Content-Length: 9602
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8,ru;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:login.microsoftonline.com
Origin:http://localhost:23589
Referer:http://localhost:23589/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
 base.SetConfig(new HostConfig
            {
                GlobalResponseHeaders = {
                    { "Access-Control-Allow-Origin", "*" },
                    { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
                    { "Access-Control-Allow-Headers", "Content-Type" },
                },
            });
GET /d331431b-899c-4666-8094-e82e6bfc3964/oauth2/authorize?response_type=code&resource=https%3a%2f%2fanalysis.windows.net%2fpowerbi%2fapi&client_id=0d3be5ed-3361-43f5-9d25-a5ccefb11f7e&redirect_uri=http%3a%2f%2flocalhost%3a23589%2fapi%2fauth%2faad&scope=user_impersonation&state=3c41d4ea46a8408fb19fdf05ea07643a HTTP/1.1
Host: login.microsoftonline.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: application/json, text/plain, */*
Origin: http://localhost:23589
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
Referer: http://localhost:23589/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8,ru;q=0.6
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
x-ms-request-id: 70fcd73f-f880-4744-b896-6edc491b1d22
client-request-id: a52446b6-a7f0-4afb-ba23-8d27207ddb27
X-Frame-Options: DENY
x-ms-gateway-service-instanceid: ESTSFE_IN_19
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
Set-Cookie: buid=AAABAAEAiL9Kn2Z27UubvWFPbm0gLWnOYMRRqrZRDzgogkab1uuAetOi-f1iLnpE1G5EU3xMkzYdvTgIs2Fz79S07PNcfnEry6eWS8RX_4k8awcIgY063VQ7VvWP6SRRvXfCgpJeIAA; expires=Fri, 02-Dec-2016 22:20:48 GMT; path=/; secure; HttpOnly
Set-Cookie: esctx=AAABAAAAiL9Kn2Z27UubvWFPbm0gLZemnOQ8vijuCpi6h8NzV-CjOfr0MZwZhb4Nfczf20C1TSXORoJbIHCbVBV_MmeuXTR1mbzh9GzFIBmi__ff0M-gGh02fol-sHPyKJnU7Zfi2cEYWensHvmiEJO9Tw5KbO8tWdZxl-XDi7V5IZNNsJWp4LxTVVGkOeyOYieMfJ6mIAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly
Set-Cookie: x-ms-gateway-slice=productiona; path=/; secure; HttpOnly
Set-Cookie: stsservicecookie=ests; path=/; secure; HttpOnly
X-Powered-By: ASP.NET
Date: Sun, 05 Jun 2016 22:20:49 GMT
Content-Length: 36210