标签:eva addheader microsoft detail 其他 它的 类库 cookie 1.0
ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。 即使使用jQuery的jsonp方法,type设为POST,也会自动变为GET。
"script": Evaluates the response as JavaScript and returns it as plain text. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true.Note: This will turn POSTs into GETs for remote-domain requests.
如果跨域使用POST方式,可以使用创建一个隐藏的iframe来实现,与ajax上传图片原理一样,但这样会比较麻烦。
没有设置跨越,浏览器会返回
XMLHttpRequest cannot load http://google.com/. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://run.jsbin.io‘ is therefore not allowed access.
在开发工具中Network并没有任何记录。但实际请求仍会被发送,只是在浏览器做了拦截。 参考:Access-Control-Allow-Origin与跨域
随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-Origin Resource Sharing)。IE8、Firefox 3.5 及其以后的版本、Chrome浏览器、Safari 4 等已经实现了 Cross-Origin Resource Sharing 规范,实现了跨域请求。所有和CORS相关的response header都是以“Access-Control-“为前缀的:
在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息。
在Web.config中加入统一的Access-Control-Allow-Origin返回头信息,是最原始,也是最直接的。无论是在老版本WebForm还是Mvc都适用。
CORS on IIS7 For Microsoft IIS7, merge this into the web.config file at the root of your application or site:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
a)创建一个attribute
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
base.OnActionExecuting(filterContext);
}
}
b)应用到Controller中的Action
[AllowCrossSiteJson]
public ActionResult YourMethod()
{
return Json("data");
}
参考:ASP.NET MVC 设置Access-Control-Allow-Origin
使用Microsoft.AspNet.Cors包,这个是微软封装好的一个类库,原理和之前是一样的,有兴趣的话可以详细参考如下的文章配置:
标签:eva addheader microsoft detail 其他 它的 类库 cookie 1.0
原文地址:http://www.cnblogs.com/AlexOneBlogs/p/7451485.html