it-roy-ru.com

Как я могу использовать Access-Control-Allow-Origin? Это просто идет между тегами заголовка HTML?

Я читал о Access-Control-Allow-Origin, потому что он кажется эффективным для разрешения междоменных запросов, так как у меня есть доступ к внешнему сайту. У меня вопрос: как я могу использовать Access-Control-Allow-Origin для разрешения междоменных запросов? Я попробовал это (не смейтесь) (кстати, все, что я хочу - это вернуть одно число, 1 или 0)

<html>
<head>
Access-Control-Allow-Origin: *
</head>
<body>
1
</body>
</html>

Я рядом? Спасибо за вашу помощь. Если есть более простой способ сделать простой междоменный запрос, дайте мне знать.

21
davis

Это заголовок HTTP. Вы должны настроить свой веб-сервер или веб-приложение для идеальной отправки этого заголовка. Возможно в htaccess или PHP.

В качестве альтернативы вы можете использовать

<head>...<meta http-equiv="Access-Control-Allow-Origin" content="*">...</head>

Я не знаю, будет ли это работать. Не все заголовки HTTP могут быть настроены непосредственно в HTML. </ Strike>

Это работает как альтернатива многим HTTP-заголовкам, но см. Комментарий @EricLaw ниже. Этот конкретный заголовок отличается.

Предостережение

Этот ответ строго о том, как установить заголовки. Я ничего не знаю о разрешении междоменных запросов.

О заголовках HTTP

Каждый запрос и ответ имеют заголовки. Браузер отправляет это на веб-сервер

GET /index.htm HTTP/1.1

Тогда заголовки

Host: www.example.com
User-Agent: (Browser/OS name and version information)
.. Additional headers indicating supported compression types and content types and other info

Затем сервер отправляет ответ

Content-type: text/html
Content-length: (number of bytes in file (optional))
Date: (server clock)
Server: (Webserver name and version information)

Дополнительные заголовки могут быть настроены, например, Cache-Control, все зависит от вашего языка (PHP, CGI, Java, htaccess) и веб-сервера (Apache и т.д.).

10
George Bailey

Существует 3 способа разрешить кросс-доменное происхождение (кроме jsonp):

1) Установите заголовок на странице, используя язык шаблонов, такой как PHP. Имейте в виду, что HTML не может быть перед вашим заголовком, иначе он потерпит неудачу.

 <?php header("Access-Control-Allow-Origin: http://example.com"); ?>

2) Измените файл конфигурации сервера (Apache.conf) и добавьте эту строку. Обратите внимание, что "*" представляет разрешить все. Некоторым системам также может понадобиться набор учетных данных. В целом, разрешить любой доступ - это риск для безопасности, которого следует избегать:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true

3) Чтобы разрешить несколько доменов на веб-серверах Apache, добавьте в файл конфигурации следующее

<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(example.org|example.com)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    Header set Access-Control-Allow-Credentials true
</IfModule>

4) Для разработки используйте только взломайте ваш браузер и разрешите неограниченное количество CORS, используя расширение Chrome Allow-Control-Allow-Origin

16
mbokil
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>

Эта команда отключает только первую информацию о предупреждении консоли

приставка

Результат: консольный результат

0
Jakub Ujvvary

Если вы используете Java и Spring MVC, вам просто нужно добавить следующую аннотацию в ваш метод, возвращающую вашу страницу:

@CrossOrigin(origins = "*")

«*» означает, что ваша страница будет доступна из любого места . См. https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Origin for подробнее об этом.

0
Laurent