У меня есть webapp, что делает JavaScript-вызов веб-сервисом. Я не хочу, чтобы доступ к любым программам, таким как SOAP ui/curl, отправлял запрос на мой веб-сервис. В заголовке ответа я сделать фильтрацию только моей веб-странице:Как разрешить только веб-приложение получать доступ к веб-сервису?
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 поэтому не разрешен доступ.
Что хорошо, я очень доволен, но, видимо, я могу использовать Soap ui/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)
Как разрешить только начало моего веб-приложения совершать звонки в службу?
На самом деле нет надежного способа обеспечить такое ограничение. Зачем вам это нужно? – Pointy
CORS применяется только при поддержке (поддерживающей) клиентской стороны при контакте с ресурсом в удаленном домене. Следовательно, когда удаленный сервер или любое другое удаленное программное обеспечение отправляет HTTP-запрос на ваш сервер, CORS не применим. Ограничение доступа к сервису зависит от других факторов, связанных с настройкой и типом сервера. Пожалуйста, поделитесь ими. – Boaz
В браузерах используются Access-Control-Allow-Origin и аналогичные заголовки, и поскольку curl не запускается в браузере, эти заголовки игнорируются. Вы можете попробовать проверить Referrer или строку агента, использовать сгенерированные токены и т. Д., Но вы не сможете на 100% блокировать все, что не является вашим приложением. –