码迷,mamicode.com
首页 > Windows程序 > 详细

.net web api跨域问题

时间:2018-09-27 01:51:58      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:链接   system   配置   问问题   protocol   头部   policy   origin   ESS   

 

No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.

当使用ajax访问远程服务器时,请求失败,浏览器报如上错误。这是出于安全的考虑,默认禁止跨域访问导致的。

一、什么是跨域访问

举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的。跨域访问违反了同源策略,同源策略的详细信息可以点击如下链接:Same-origin_policy; 
总而言之,同源策略规定,浏览器的ajax只能访问跟它的HTML页面同源(相同域名或IP)的资源。

二,解决方案:

     方案1:在webconfig配置文件的 system.webServer节点加上下述配置即可:

<system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
  </customHeaders>
</httpProtocol>

 

  方案二:输出流中添加允许跨域的头部

在服务器端的filter或者servlet里面添加 
response.setHeader("Access-Control-Allow-Origin", "*"); 
“Access-Control-Allow-Origin”表示允许跨域访问,“*”表示允许所有来源进行跨域访问,这里也可以替换为特定的域名或ip。 
很显然,这种方式对非网站拥有人员来说是不能做到的。而且此种方式很容易受到CSRF攻击。

 

  方案三:采用jsonp

将ajax请求中的dataType属性设置为“jsonp”

.net web api跨域问题

标签:链接   system   配置   问问题   protocol   头部   policy   origin   ESS   

原文地址:https://www.cnblogs.com/niguang/p/9710807.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!