【问题标题】:Does Cross-origin resource sharing affect all clients that connect to a web method?跨域资源共享是否会影响连接到 Web 方法的所有客户端?
【发布时间】:2017-11-02 00:35:58
【问题描述】:

我有一个 Web 方法,我想从我的 C# 应用程序中调用它,并提供了一个 Javascript 示例,展示了如何调用该方法。我已经确定从我的桌面运行 Javascript 会遇到 CORS 问题 - 当我将 javascript 放在服务器上并从与 web 方法相同的文件夹中运行它时,我能够运行示例。

我的 C# 应用会遇到同样的 CORS 问题吗?还是因为只有浏览器具有内置的 CORS 安全性,所以可以吗?

--编辑--

我一直在使用 System.Net.Http.HttpClient 和http://restsharp.org/

假设这两个对象是网络浏览器的包装器,我是否正确?他们会遇到 CORS 问题吗? 我真的不想写 Sockets 代码。

【问题讨论】:

  • CORS 是浏览器的东西,所以,是的,从 C# 发出 http 请求不应该有任何 CORS 问题

标签: javascript c# cors


【解决方案1】:

出于安全原因,浏览器会限制从浏览器脚本中发起的跨域 HTTP 请求。例如,XMLHttpRequest 遵循同源策略。这意味着使用 XMLHttpRequest 的 Web 应用程序只能向其自己的域发出 HTTP 请求。这可以防止应用程序容易受到 CSRF 攻击。但是,在某些情况下,应用程序需要访问来自不同域的资源。这是 CORS 发挥作用以允许跨域请求的时候。

话虽如此,您的 C# 应用程序应该能够调用 WEB API 而不会出现任何 CORS 问题,只要它是套接字到套接字的通信(而不是通过浏览器)。

【讨论】:

    【解决方案2】:

    在我脑海深处,我记得与浏览器相关的 cors 将始终被阻止,除非注明或更改,例如,如果您使用 chrome 并且 cors 扩展允许浏览器 cors 控制,但在服务器端,它们的没有什么能阻止服务器相互交互。

    但这取决于标题中允许的内容

    我会尝试制作一些文件来证实这一点。

    https://spring.io/understanding/CORS

    请求包含一个 Origin 标头,指示客户端代码的来源。

    服务器将考虑请求的来源并允许或禁止该请求。如果服务器允许请求,那么它将使用请求的资源和响应中的 Access-Control-Allow-Origin 标头进行响应。此标头将向客户端指示允许哪些客户端来源访问资源。假设 Access-Control-Allow-Origin 标头与请求的 Origin 匹配,则浏览器将允许该请求。

    另一方面,如果响应中缺少 Access-Control-Allow-Origin 或者它与请求的 Origin 不匹配,浏览器将拒绝该请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2013-01-12
      • 2018-05-04
      • 2011-07-31
      相关资源
      最近更新 更多