Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何将跨域web服务的使用限制为某些请求_Ajax_Wcf_Web Services_Security_Cross Domain - Fatal编程技术网

Ajax 如何将跨域web服务的使用限制为某些请求

Ajax 如何将跨域web服务的使用限制为某些请求,ajax,wcf,web-services,security,cross-domain,Ajax,Wcf,Web Services,Security,Cross Domain,如果我在.NET中有一个web服务,如WCF或ASMX,在服务器上发布此服务时,您将无法从承载此服务的应用程序以外的任何位置访问它,除非您更改安全设置以允许跨域访问 现在,如果地址已知,任何应用程序都可以使用此web服务,对吗? 例如,您可以在本地浏览器中调用此服务器web服务,并查看它的功能 问题是 如何保护此web服务。。。并将消费限制在某些已定义的应用程序或已预定义到web服务的请求上 现代浏览器默认情况下禁止跨域访问。这可以通过利用规范定义的accesscontrolalloworigi

如果我在.NET中有一个web服务,如
WCF
ASMX
,在服务器上发布此服务时,您将无法从承载此服务的应用程序以外的任何位置访问它,除非您更改安全设置以允许跨域访问

现在,如果地址已知,任何应用程序都可以使用此web服务,对吗? 例如,您可以在本地浏览器中调用此服务器web服务,并查看它的功能

问题是
如何保护此web服务。。。并将消费限制在某些已定义的应用程序或已预定义到web服务的请求上

现代浏览器默认情况下禁止跨域访问。这可以通过利用规范定义的
accesscontrolalloworigin
头来有条件地放宽。特别是,来自现代浏览器的跨域XHR请求将始终包含一个
Origin
头,服务器代码可以使用该头根据发出请求的页面的域过滤请求。您的服务器可以拒绝请求(例如,以401(未经授权)响应状态进行响应),也可以通过返回
Access Control Allow Origin
头来满足请求,该头的值与
Origin
请求头中的值相同


但是请注意,通过CORS放松对系统的访问是安全方面的,与使用某种形式的身份验证限制访问非常不同。您依赖于客户在声明其来源时表现良好,但这并不总是一个有效的假设

您需要向web服务添加身份验证。因此,对每个方法的请求都将通过cookie中发送的令牌进行身份验证

对于web站点,这可以使用站点其余部分使用的身份验证cookie。如果用户必须登录到移动应用程序,那么您还需要对他们进行身份验证

这将阻止任何无法访问您的网站或移动应用程序的人使用您的web服务


我还强烈建议使用TLS(SSL)保护您的web服务和网站,以便通过HTTPS访问所有内容。

不确定您的意思是XSS。。。XSS指的是一个安全漏洞。你想做什么?在我看来,你有一个域,你的网站向其发出AJAX请求,但你现在想引入一个移动应用程序来使用相同的API?这实际上是一个不同的域(例如foo.com和bar.com)?XSS意味着跨站点脚本。。。是的,这是一个安全漏洞。。。我想做的是,当您知道我的web服务的元数据地址(并告诉我在您的网络上找到HTTP请求有多难:)时,阻止任何人使用我的web服务,这与允许您的web服务来自不同的应用程序(或域)不同。可能的重复您有这样的例子吗?ThanksCORS是关于放松客户端的同源策略,而不是保护服务器端。虽然OP可能需要CORS,但仍然需要服务器解决方案。