Ajax跨域请求
2017-08-18 11:35 知识在于积累 阅读(129) 评论(0) 收藏 举报在ASP.NET项目开发中,由于需求的改变业务的增加,我们需要将原来的一个站点拆分成两个网站站点。新站点有新的数据库以及model进行业务处理,而管理网站我们仍部署在原来站点中。但是管理网站需要管理新站点的数据,这就导致我们需要跨站点去新站点调用接口进行数据操作。而我们是通过ajax调用接口的方式进行实现的,于是出现了ajax跨越请求问题。
1.身份认证。1.cookie共用解析方法;2.ajax post请求header中传递cookie,通过设置xhrFields: {withCredentials: true }实现。
2.服务器响应跨域请求:在web.config中设置
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://www.abc.com" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
</system.webServer>
注意项:当<add name="Access-Control-Allow-Credentials" value="true" />为true时,要具体指明"Access-Control-Allow-Origin",否则会出现请求浏览器JSON数据解析错误等问题。
遗留问题:
跨域请求在web安全中是被禁止的,因此在Chrome较新版本中不能进行跨越请求,需要对chrome浏览器进行设置才能正确请求。具体设置见http://www.cnblogs.com/cshi/p/5660039.html。
浙公网安备 33010602011771号