当前位置: 首页 > news >正文

c# iis 解决跨域问题

该错误是一个典型的跨域问题,说明从 http://www.fuc.com 发起的请求被目标服务器(https://aip.baidubce.com)拒绝,原因是目标服务器未返回正确的 AccessControlAllowOrigin 响应头。

 解决方法

 1. 了解问题的本质
 CORS(跨域资源共享)是一种安全机制,用于限制从一个域名向另一个域名发起的请求。
 目标服务器(https://aip.baidubce.com)需要明确允许来自 http://www.fuc.com 的跨域请求,但目前它没有返回 AccessControlAllowOrigin。

 2. 解决跨域问题的方法

 方法 1:服务器端代理请求(推荐)

跨域问题通常可以通过代理服务器解决。

1. 设置 IIS 代理
    在 IIS 服务器上创建一个新的代理接口,例如 http://www.fuc.com/api/token。
    在代理端转发请求到目标服务器 https://aip.baidubce.com/oauth/2.0/token。

   配置 web.config:
   xml
   <configuration>
     <system.webServer>
       <rewrite>
         <rules>
           <rule name="ProxyRule" stopProcessing="true">
             <match url="^api/token$" />
             <action type="Rewrite" url="https://aip.baidubce.com/oauth/2.0/token?{R:1}" />
           </rule>
         </rules>
       </rewrite>
     </system.webServer>
   </configuration>
   

2. 修改 Unity 请求 URL
   将 Unity 中的请求从 https://aip.baidubce.com/oauth/2.0/token 改为 http://www.fuc.com/api/token。

 方法 2:使用第三方代理服务

可以使用一些现成的代理服务(如 Nginx 或 Express)部署代理。

 Nginx 示例配置:
   nginx
   location /api/token {
       proxy_pass https://aip.baidubce.com/oauth/2.0/token;
       proxy_set_header Host aip.baidubce.com;
       proxy_set_header XRealIP $remote_addr;
       proxy_set_header XForwardedFor $proxy_add_x_forwarded_for;
   }
   

 方法 3:请求目标服务器的支持

如果你有权限修改目标服务器(https://aip.baidubce.com)的配置,可以添加 CORS 支持:

 返回正确的响应头:
  
  AccessControlAllowOrigin: http://www.fuc.com
  AccessControlAllowMethods: GET, POST, OPTIONS
  AccessControlAllowHeaders: ContentType, Authorization
  

 方法 4:前端调整(仅适用于测试)

如果你不需要读取响应内容,或者只是想跳过 CORS 校验,可以将 fetch 的 mode 设置为 nocors:

javascript
fetch('https://aip.baidubce.com/oauth/2.0/token?client_id=...&client_secret=...&grant_type=client_credentials', {
    mode: 'nocors',
})
.then(response => {
    console.log(response); // 这里的 response 是一个 opaque 响应,无法读取内容
})
.catch(error => {
    console.error(error);
});


但 不推荐此方法,因为 nocors 模式会导致无法访问响应内容,且不适合生产环境。

 3. 检查浏览器与目标服务限制

 浏览器缓存问题:清理浏览器缓存后重试。
 CORS 限制:某些云服务(如百度 API)可能明确限制了跨域访问。如果目标服务无法支持跨域请求,代理是唯一的解决办法。

 4. 验证

 确保修改后,使用浏览器开发者工具(F12)检查请求的响应头是否包含:
  
  AccessControlAllowOrigin: http://www.fuc.com
  
 确保 Unity 前端可以正常收到目标 API 的响应。

http://www.lryc.cn/news/508831.html

相关文章:

  • MySQL版本对应的mysql-connector-java版本下载地址
  • 【读书笔记】《论语别裁》爱与罪
  • uniApp上传文件踩坑日记
  • Webhook 是什么?详解其工作原理
  • log4j2漏洞复现(CVE-2021-44228)
  • tcpdump抓包分析
  • LearnOpenGL学习(碰撞检测,粒子)
  • 操作系统(24)提高磁盘I/O速度的途径
  • C/C++基础知识复习(45)
  • 现代C++锁介绍
  • Squid代理服务器的安装使用
  • 爬虫学习案例8
  • 深入了解 CouchDB 的 Mango 查询:操作符和限制
  • 基于SSM(Spring + Spring MVC + MyBatis)框架搭建一个病人跟踪信息管理系统
  • U盘文件名变乱码:原因、恢复与预防全解析
  • EasyGBS国标GB28181公网平台P2P远程访问故障诊断:云端服务端排查指南
  • 一网多平面
  • animatediff 模型网盘分享
  • ansible play-book玩法
  • MySQL索引-索引的分类和创建
  • 如何给负载均衡平台做好安全防御
  • HR/TA/HRBP的关系
  • Docker环境下MySQL数据库持久化部署全攻略
  • 如何查看pad的console输出,以便我们更好的进行调试,查看并了解实际可能的问题。
  • react中使用ResizeObserver来观察元素的size变化
  • Linux快速入门-Linux文件系统管理
  • 漏洞检测工具:Swagger UI敏感信息泄露
  • VSCode如何修改默认扩展路径和用户文件夹目录到D盘
  • 【超详细实操内容】django的身份验证系统之限制用户访问的三种方式
  • AI芯片常见概念