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

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.kler.cn/a/448505.html

相关文章:

  • 对象克隆与单例模式的实现
  • 硬件工程师面试题 11-20
  • 【WRF教程第3.6期】预处理系统 WPS 详解:以4.5版本为例
  • 使用插件时要注意
  • C语言——实现字符分类统计
  • Linux 使用的小细节
  • Webpack简单介绍及安装
  • 深度学习试题及答案解析(二)
  • 【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
  • LeetCode 583. 两个字符串的删除操作 java题解
  • KAFKA消費數據的三種方式
  • vue3项目中遇到的问题及解决方案
  • 信奥赛四种算法描述
  • Saprk和Flink的区别
  • Debian环境安装Docker Engine
  • 详解磁盘IO、网络IO、零拷贝IO、BIO、NIO、AIO、IO多路复用(select、poll、epoll)
  • MySQL 中的常见错误与排查
  • 分类模型的预测概率解读:3D概率分布可视化的直观呈现
  • 从零开始学Java,学习笔记Day24
  • 前端自动化部署更新,自动化打包部署