Javascript 如果我没有域,如何将CORS头添加到我的RESTAPI?

Javascript 如果我没有域,如何将CORS头添加到我的RESTAPI?,javascript,asp.net,rest,Javascript,Asp.net,Rest,我正在开发一个RESTAPI,它运行在一个拥有自己公共IP的外部服务器上。现在我想从家里的PC上调用它,从逻辑上讲,它没有自己的IP或域。如何设置电脑的访问控制允许原点 这是我的函数(我检查了API密钥): 出于测试目的,我在REST API的控制器上方添加了以下内容: [EnableCors(origins: "*", headers: "*", methods: "*")] 我得到以下错误: 原因:缺少CORS标头“访问控制允许来源” 我还必须在Web.config文件中添加自定义标题:

我正在开发一个RESTAPI,它运行在一个拥有自己公共IP的外部服务器上。现在我想从家里的PC上调用它,从逻辑上讲,它没有自己的IP或域。如何设置电脑的访问控制允许原点

这是我的函数(我检查了API密钥):

出于测试目的,我在REST API的控制器上方添加了以下内容:

[EnableCors(origins: "*", headers: "*", methods: "*")]
我得到以下错误:

原因:缺少CORS标头“访问控制允许来源”


我还必须在Web.config文件中添加自定义标题:

<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" />
         <add name="Access-Control-Allow-Credentials" value="true" />
        </customHeaders>
      </httpProtocol>


您无法从请求者控制COR。它必须在目标服务器上配置。“逻辑上没有自己的IP或域”。。。如果它连接到互联网,那么它将有一个公共IP地址。从该机器上访问whatismyip.com(或许多其他网站)等网站,了解它是什么。请注意,虽然IP可能不会保持静态,但国内互联网提供商可能不会为您提供永久IP,并且可能会不时更改。但是,同样,如果您试图通过AJAX从家用PC上托管的网站访问API(这是CORS适用于您描述的情况的唯一场景),那么您很可能通过
http://localhost
或类似文件,所以你可以把它添加到你的CORS访问控制头中。请记住,限制适用的是网站的域,而不是与该网站建立原始连接的机器,还请记住,CORS不适用于非AJAX HTTP请求。现在还不清楚到底是什么情况。您是否确实尝试从PC访问此API并遇到特定问题?如果是,请显示您使用的代码,以及您收到的确切错误消息。@Taplar为了公平起见,您可以拥有一个远程系统,该系统允许通过身份验证的客户端为其当前会话/访问令牌/客户端id指定一组CORS域来定制CORS头。当然,配置这些CORS参数的端点本身必须允许
访问控制允许来源:
,这可能会失败,也可能不会失败CORS点。这将允许从任何站点进行跨域访问,而不仅仅是您自己的站点。可以吗?它真正消除了CORS的目的。仔细考虑你是否认为这是你的应用程序和用户的可接受的风险。根据API的用途和功能,它可能是好的。或者它可能是一个安全漏洞。为了测试的目的,它就足够了。对于实时环境,我将放置前端服务器的IP
<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" />
         <add name="Access-Control-Allow-Credentials" value="true" />
        </customHeaders>
      </httpProtocol>