跨域资源共享是不是会影响连接到 Web 方法的所有客户端?

Posted

技术标签:

【中文标题】跨域资源共享是不是会影响连接到 Web 方法的所有客户端?【英文标题】: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 问题 【参考方案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 不匹配,浏览器将拒绝该请求。

【讨论】:

以上是关于跨域资源共享是不是会影响连接到 Web 方法的所有客户端?的主要内容,如果未能解决你的问题,请参考以下文章

监控器连接到电脑上,会影响电脑性能损坏电脑吗? 难道监控器必须连接到电脑上吗

jsonp跨域请求

在 sharepoint 中创建可视 Web 部件连接到列表

windows 无法连接到打印机。操作失败,错误为0x0000011b?

如何使用 Ngrok 将简单的 Java HTTP 客户端应用程序连接到 Web 资源?

跨域请求