Невозможно отключить политику того же происхождения на nginx

Мне нужно отключить ту же политику происхождения на сервере. Просто в качестве фона: я убедился, что все работает, запустив хром с отключенным флагом веб-безопасности. Все работает так, как ожидалось.

Вот что я сделал на стороне nginx:

upstream phpfcgi {
  server unix:/var/run/php5-fpm.sock; #for PHP-FPM running on UNIX socket
}

server {
listen 80;

root /var/www/yammi2;
    index index.html index.php index.htm;
server_name myserver.ch;

add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Credentials 'true';
    add_header Access-Control-Allow-Headers 'Content-Type,accept,x-wsse,origin';
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE';

# strip app.php/ prefix if it is present
    rewrite ^/app\.php/?(.*)$ /$1 permanent;

location / {
    index app.php;
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    rewrite ^(.*)$ /app.php/$1 last;
}

# pass the PHP scripts to FastCGI server from upstream phpfcgi
location ~ ^/(app|app_dev|config)\.php(/|$) {
    fastcgi_pass phpfcgi;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  HTTPS off;

}   

}

Когда я затем выполняю вызов curl: curl -I myserver.ch, я получаю следующий результат:

HTTP/1.1 302 Found
Server: nginx/1.1.19
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.3.10-1ubuntu3.9
Set-Cookie: PHPSESSID=gvcl3v533ib91l2c6v888gl9d3; path=/
cache-control: no-cache
date: Fri, 10 Jan 2014 07:01:18 GMT
location: http://myserver.ch/admin/restaurant
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type,accept,x-wsse,origin
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE

так что, по крайней мере, кажется, что заголовки установлены правильно, но результат, когда я делаю вызов ajax:

OPTIONS http://myserver.ch/api/v1/restaurant/closest?max=50&lat=47&lon=8 500 (Internal Server Error) jquery-2.0.3.js:7845
OPTIONS http://myserver.ch/api/v1/restaurant/closest?max=50&lat=47&lon=8 Origin http://localhost is not allowed by Access-Control-Allow-Origin. jquery-2.0.3.js:7845
XMLHttpRequest cannot load http://myserver.ch/api/v1/restaurant/closest?max=50&lat=47&lon=8. Origin http://localhost is not allowed by Access-Control-Allow-Origin. overview.html:1

Меня немного смущает «Внутренняя ошибка сервера», но я решил, что, поскольку она работает с флагом, это должно быть как-то связано с тем же источником.

Серверное приложение представляет собой приложение Symphony. Надеюсь, я ничего не пропустил. Есть идеи, как это исправить? Или хотя бы как его отлаживать?

Возможно, один из последних фрагментов, вот как я делаю вызов (опять же, это не должно быть проблемой, потому что с отключенным флагом безопасности он работает так, как ожидалось):

$.ajax({
          url: url,
          headers: {"x-wsse": getWsseHeader()},
          beforeSend: function (request) {
                request.setRequestHeader("x-wsse", getWsseHeader());
          },
          success: function() {

          },
          error: function(error) {
            console.log(error.statusText);
          }
        });

person rapsli    schedule 10.01.2014    source источник
comment
Попробуйте вызвать файл curl STATIC и проверьте, работает ли это. Если вы получаете внутреннюю ошибку - проблема в конфигурации сервера, в другом результате - с вашим скриптом. Это ваша отправная точка.   -  person BaBL86    schedule 10.01.2014
comment
хороший намек. Таким образом, указание запроса на статический файл работает, как и ожидалось, но затем, как только я добавляю дополнительные заголовки x-wsse, он больше не работает (даже со статическим файлом). Когда я отправляю тот же запрос через Postman (клиент Rest), он работает нормально. Больше подсказок?   -  person rapsli    schedule 10.01.2014
comment
Сделал некоторые настройки. Теперь я могу отправить предварительный вызов OPTIONS, успешно вернуться, но как только я сделаю вызов GET, запрос будет отменен?! Ответа нет, на сервере тоже ничего.   -  person rapsli    schedule 10.01.2014


Ответы (1)


Изменить эту строку

add_header Access-Control-Allow-Origin *;

as

add_header 'Access-Control-Allow-Origin' '';
person Asiri H.    schedule 26.07.2019