跨域资源共享是不是会影响连接到 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 方法的所有客户端?的主要内容,如果未能解决你的问题,请参考以下文章
监控器连接到电脑上,会影响电脑性能损坏电脑吗? 难道监控器必须连接到电脑上吗
在 sharepoint 中创建可视 Web 部件连接到列表
windows 无法连接到打印机。操作失败,错误为0x0000011b?