Javascript 如何仅允许web应用访问web服务?

Javascript 如何仅允许web应用访问web服务?,javascript,cors,soapui,Javascript,Cors,Soapui,我有一个webapp,它可以对web服务进行JavaScript调用。我不想让访问soapui/curl之类的程序向我的web服务发出post请求。 在响应标题中,我仅对我的网页进行筛选: Access-Control-Allow-Origin:http://myurl.com 当我从本地计算机执行请求时,服务器不允许这样做: XMLHttpRequest:无法加载http://myurl.com/service/rest/user/add. Access Control Allow Orig

我有一个webapp,它可以对web服务进行JavaScript调用。我不想让访问soapui/curl之类的程序向我的web服务发出post请求。 在响应标题中,我仅对我的网页进行筛选:

Access-Control-Allow-Origin:http://myurl.com
当我从本地计算机执行请求时,服务器不允许这样做:

XMLHttpRequest
无法加载http://myurl.com/service/rest/user/add.
Access Control Allow Origin
标题有一个值http://myurl.com 这不等于提供的原点。起源http://localhost:9000 因此不允许访问

这很好,我很高兴,但显然我可以使用soapui/curl进行上述调用,并且服务允许这样做。此调用的标题:

=== MimeHeaders ===
accept-encoding = gzip,deflate
content-type = application/json
content-length = 39
host = localhost:8080
connection = Keep-Alive
user-agent = Apache-HttpClient/4.1.1 (java 1.5)

如何仅允许我的web应用程序源代码调用该服务?

CORS仅适用于浏览器沙箱。如果您想阻止访问,请放置一些类似于eg的身份验证或使用一些自定义标题来进行白名单调用。

CORS仅适用于浏览器沙箱。如果要阻止访问,请放置一些类似于eg的身份验证或使用一些自定义标题来进行白名单调用。

您在此处定义的只是一种客户端保护,以防浏览器客户端对服务器执行恶意请求,只要浏览器未在不安全的模式下运行


如果您的后端需要安全性,考虑使用某种防火墙来限制网络访问,或者用基本的Auth.

< P>这样的身份验证机制来保护你的后端。这里定义的只是一个客户端保护,以防止浏览器客户端对服务器执行恶意请求,只要浏览器不在不安全的模式下运行。

如果您需要后端的安全性,请考虑使用某种防火墙限制网络访问,或者使用基本Auth.< /P> < P>快速回答的身份验证机制来保护后端:您不能肯定100%网页中的JavaScript发出请求。根据定义,就是你的用户发出请求

其他答案:你可以使用多种材料来保护自己

  • 生成具有有限生存期的cookie
  • 设置节流阀,以便按时间单位限制请求的数量

  • 还有很多其他的解决方案,只要在网上搜索,你就会找到很多。

    快速回答:你不能100%确定你的网页中的Javascript是否发出了请求。根据定义,就是你的用户发出请求

    其他答案:你可以使用多种材料来保护自己

  • 生成具有有限生存期的cookie
  • 设置节流阀,以便按时间单位限制请求的数量

  • 还有很多其他的解决方案,只要在网上搜索,你就会发现很多。

    没有可靠的方法来实施这样的限制。为什么要这样做?CORS仅在与远程域上的资源联系时由(支持)客户端浏览器强制执行。因此,当远程服务器或任何其他类型的远程软件向您的服务器发送HTTP请求时,CORS不适用。限制对服务的访问除其他因素外,还取决于您的设置和服务器类型。也请分享这些。浏览器使用访问控制允许源文件和类似的标题,因为curl不在浏览器中运行,所以这些标题将被忽略。你可以尝试检查推荐人,或代理字符串,使用生成的令牌等,但你将无法100%阻止任何不是你的应用程序。确实没有可靠的方法来实施这样的限制。为什么要这样做?CORS仅在与远程域上的资源联系时由(支持)客户端浏览器强制执行。因此,当远程服务器或任何其他类型的远程软件向您的服务器发送HTTP请求时,CORS不适用。限制对服务的访问除其他因素外,还取决于您的设置和服务器类型。也请分享这些。浏览器使用访问控制允许源文件和类似的标题,因为curl不在浏览器中运行,所以这些标题将被忽略。您可以尝试检查推荐人或代理字符串,使用生成的令牌等,但您将无法100%阻止任何不是您的应用程序。