NET Framework接口跨域问题

一、什么是跨域

跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。

查看浏览器开发者工具Console报错:

Failed to load http://a.a.com:8080/A/FromServlet?userName=123: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://b.b.com:8080' is therefore not allowed access.

http://www.abc.com/a/b 调用 http://www.abc.com/d/c(非跨域)

http://www.abc.com/a/b 调用 http://www.def.com/a/b (跨域:域名不一致)

http://www.abc.com:8080/a/b 调用 http://www.abc.com:8081/d/c (跨域:端口不一致)

http://www.abc.com/a/b 调用 https://www.abc.com/d/c (跨域:协议不同)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

 

三、解决方案

接口跨域(接口跨域的话在web.config文件中配置)

<system.webServer>
    <httpProtocol>
      <customHeaders>

        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>//配置类型
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type,token"/>//配置头部
        <add name="Access-Control-Allow-Origin" value="*" />

      </customHeaders>
    </httpProtocol>
</system.webServer>

注意:在web.config文件中配置一定不能出现 <directoryBrowse enabled="true"/>,不然会报错!!!!!

posted @ 2021-11-11 15:33  猴猴手记  阅读(608)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end