- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 SSL 证书进行身份验证的 API。如果我尝试通过另一个带有 SSL 证书的 API 使用它,我会遇到错误:
XMLHttpRequest cannot load https://xxxx.mydomain.com/v2/auth/token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://yyyy.mydomain.com' is therefore not allowed access. The response had HTTP status code 400.
我不能为此使用通配符。
我尝试使用它,但它只适用于 HTTP:
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
有人知道吗?
最佳答案
由于每个响应只能允许一个来源条目,因此您需要检查飞行前请求中的 Origin
header 以查看是否允许它,然后编写Access-Control-Allow-Origin
header 值相应。
IIS 7.0+ 中最简单的方法可能是编写自定义处理程序并注册它以处理对 /v2/auth/
uri 路径的 OPTIONS 请求。
我已经有一段时间没有编写 IIS 扩展了,所以这是允许同一命名空间 (mydomain.com
) 中的任何 Origin
的粗略尝试:
public class MultipleOriginHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext ctx)
{
Uri origin;
if(String.Compare(ctx.Request.HttpMethod,"OPTIONS",true) != 0)
return; // not an OPTIONS request,
if(!Uri.TryCreate(ctx.Request.Headers.Get("Origin"), UriKind.RelativeOrAbsolute, out origin))
return; // failed to extract Origin URI
if(origin.Host.EndsWith(".mydomain.com") || origin.Host == "mydomain.com"){
// Request came from one of our own sites, let's allow it
ctx.Response.AppendHeader("Access-Control-Allow-Origin",String.Format("{0}://{1}",origin.Scheme,origin.Host));
}
return;
}
}
我能想到的唯一替代方法是对 URL Rewrite
module 做类似的事情
如果你想允许基于是否经过身份验证的请求,而不是源是否属于某个主机命名空间,你也可以这样做:
if(ctx.User.Identity.IsAuthenticated){
// Request was authenticated
ctx.Response.AppendHeader("Access-Control-Allow-Origin",String.Format("{0}://{1}",origin.Scheme,origin.Host));
}
关于.net - IIS8.5 设置HTTPS网站间跨域可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151840/
根据 Android docs ,activity生命周期如下: onCreate() onStart() onResume() onPause() onStop() onDestroy() 问题是,
我有一门类(class)有很多专栏,但这个问题只需要其中三个: ---------------------------------------- | start_date | start_time
给定在同一个 Tomcat 6 上运行的两个 Web 应用程序。如果您从一个应用程序到另一个应用程序进行 http 调用,Tomcat 是否会“短路”此调用,或者它会在调用之前一直在 interweb
我是一名优秀的程序员,十分优秀!