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 的响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值