我有一个laravel应用程序,它运行在nginx代理管理器之后。laravel app在码头容器中运行,nuxt前沿也在另一个码头容器中运行。Laravel正在使用fortify、sanctum包进行身份验证和会话验证。
问题是,当我试图使用假用户登录时。那么所有的飞行前请求,get请求都能很好地工作。但是,当我尝试为登录发出一个post请求时,它似乎运行得非常好。响应状态为200,如头中所示。但是说Access Control Allow Origin头丢失了,导致不出现响应的.
我错过了什么。问题在哪里?这似乎是一个常见的问题。
繁殖方法。
我已经试过了。
/api/user(默认的神圣用户)获取用户详细信息时。然后401期就来了。这似乎不是一个有效的答案。( location / {
try_files $uri $uri/ /index.php?$query_string;
if ( $request_method = POST ) {
add_header 'Access-Control-Allow-Origin' 'https://codalay.in';
add_header 'Access-Control-Allow-Credentials' 'true';
}
}# custom headers required for cors issues for laravel.
add_header Access-Control-Allow-Origin origin;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Expose-Headers Content-Length;
add_header Access-Control-Allow-Headers Range;抛出
Reason: CORS header 'Access-Control-Allow-Origin' does not match 'https://codalay.in'我正试图从10天内解决这个问题。请帮帮忙
编辑1:添加了我的配置文件后端docker-compose.yml
version: '3'
networks:
laravel:
nginx_reverse_proxy:
external: true
services:
codalay-nginx:
image: nginx:stable-alpine
container_name: nginx-codalay
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- codalay-php
- codalay-mysql
networks:
- laravel
- nginx_reverse_proxy
codalay-mysql:
image: mysql:8
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: codalay
MYSQL_USER: rex
MYSQL_PASSWORD: 'somerandomstring'
MYSQL_ROOT_PASSWORD: 'somerandomstring'
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- laravel
- nginx_reverse_proxy
codalay-php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www/html
ports:
- "9000:9000"
networks:
- laravel
- nginx_reverse_proxy
composer:
image: composer:latest
container_name: composer
volumes:
- ./src:/var/www/html
working_dir: /var/www/html
depends_on:
- codalay-php
networks:
- laravel
- nginx_reverse_proxy
npm:
image: node:16
container_name: npm
volumes:
- ./src:/var/www/html
working_dir: /var/www/html
entrypoint: [ 'npm' ]
networks:
- nginx_reverse_proxy
codalay-artisan:
build:
context: .
dockerfile: Dockerfile
container_name: artisan
volumes:
- ./src:/var/www/html
depends_on:
- codalay-mysql
working_dir: /var/www/html
entrypoint: [ 'php', '/var/www/html/artisan' ]
networks:
- laravel
- nginx_reverse_proxy后端nginx配置:
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
# if ( $request_method = POST ) {
add_header 'Access-Control-Allow-Origin' 'https://codalay.in';
add_header 'Access-Control-Allow-Credentials' 'true';
# }
}
location ~ \.php$ {
fastcgi_read_timeout 240;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}反向代理nginx配置
# ------------------------------------------------------------
# api.codalay.in
# ------------------------------------------------------------
server {
set $forward_scheme http;
set $server "nginx-codalay";
set $port 80;
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name api.codalay.in;
# Let's Encrypt SSL
include conf.d/include/letsencrypt-acme-challenge.conf;
include conf.d/include/ssl-ciphers.conf;
ssl_certificate /etc/letsencrypt/live/npm-4/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/npm-4/privkey.pem;
# Asset Caching
include conf.d/include/assets.conf;
# Block Exploits
include conf.d/include/block-exploits.conf;
# HSTS (ngx_http_headers_module is required) (63072000 seconds = 2 years)
add_header Strict-Transport-Security "max-age=63072000;includeSubDomains; preload" always;
add_header Referrer-Policy strict-origin-when-cross-origin;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy upgrade-insecure-requests;
add_header Permissions-Policy interest-cohort=();
add_header Expect-CT 'enforce; max-age=604800';
more_set_headers 'Server: Proxy';
more_clear_headers 'X-Powered-By';
# custom headers required for cors issues for laravel.
# add_header Access-Control-Allow-Origin origin;
# add_header Access-Control-Max-Age 3600;
# add_header Access-Control-Expose-Headers Content-Length;
# add_header Access-Control-Allow-Headers Range;
# proxy_redirect off;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_read_timeout 3600;
# proxy_connect_timeout 3600;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
# Force SSL
include conf.d/include/force-ssl.conf;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
access_log /data/logs/proxy-host-11_access.log proxy;
error_log /data/logs/proxy-host-11_error.log warn;
location / {
# HSTS (ngx_http_headers_module is required) (63072000 seconds = 2 years)
add_header Strict-Transport-Security "max-age=63072000;includeSubDomains; preload" always;
add_header Referrer-Policy strict-origin-when-cross-origin;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy upgrade-insecure-requests;
add_header Permissions-Policy interest-cohort=();
add_header Expect-CT 'enforce; max-age=604800';
more_set_headers 'Server: Proxy';
more_clear_headers 'X-Powered-By';
# custom headers required for cors issues for laravel.
# add_header Access-Control-Allow-Origin origin;
# add_header Access-Control-Max-Age 3600;
# add_header Access-Control-Expose-Headers Content-Length;
# add_header Access-Control-Allow-Headers Range;
# proxy_redirect off;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_read_timeout 3600;
# proxy_connect_timeout 3600;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
# Proxy!
include conf.d/include/proxy.conf;
}
# Custom
include /data/nginx/custom/server_proxy[.]conf;
}编辑2:我用的是拉拉9。
发布于 2022-04-30 05:56:55
你好,这是我为nginx准备的laravel。
server {
listen 80 ;
listen [::]:80 ;
root /pathtoproject/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name domainname;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
#listen [::]:443 ssl;
ssl_certificate /var/www/keys/bundle.crt;
ssl_certificate_key /var/www/keys/*.domain.key;
root /pathtoproject/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name domainname.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 1800;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
proxy_read_timeout 5m;
}
location ~ /\.(?!well-known).* {
deny all;
}
}这是我用于工作设置的anguler边脚本。使用api access作为domain.com/api/
server {
listen 80;
listen [::]:80;
index index.html index.htm index.nginx-debian.html;
server_name maindomain.com;
return 301 https://$host$request_uri;
}
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
index index.html index.htm index.nginx-debian.html;
ssl_certificate /var/www/keys/bundle.crt;
ssl_certificate_key /var/www/keys/*.domain.key;
server_name maindomain.com;
location / {
proxy_pass http://127.0.0.1:4400;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location ~ /\.(?!well-known).* {
deny all;
}
location /api/ {
proxy_pass https://api.domain.com;
}
location /storage/ {
proxy_pass https://api.domain.com;
}
}https://stackoverflow.com/questions/72041288
复制相似问题