Điểm:0

làm cách nào để cho phép POST thành tệp php trong apache chỉ từ cùng một nguồn gốc?

lá cờ jp
Tai

Tôi có một trang web có biểu mẫu HTML, khi được gửi, sẽ gửi thành công yêu cầu POST tới tệp .php trên máy chủ (Apache 2.4.48).

Tuy nhiên, khi tôi để Javascript xử lý việc gửi thông qua tìm nạp JS(), máy chủ sẽ phản hồi với lỗi 405.

Vì vậy, tôi đã phân tích các tiêu đề yêu cầu và phản hồi cho hai POST và chúng gần như giống hệt nhau, vì vậy tôi bối rối về lý do tại sao phương thức đầu tiên hoạt động và phương thức kia bị từ chối.

Sau đây là yêu cầu/phản hồi khi gửi qua biểu mẫu HTML (dấu chấm than là nơi các yêu cầu POST khác nhau):

TỔNG QUAN
URL yêu cầu: https://example.com/php/script.php
Phương thức yêu cầu: POST
Mã trạng thái: 302 
Địa chỉ từ xa: 160.153.133.187:443
Chính sách giới thiệu: gốc-khi-gốc chéo


TIÊU ĐỀ TRẢ LỜI
kiểm soát bộ đệm: max-age=0 !
độ dài nội dung: 0
loại nội dung: văn bản/html; bộ ký tự = UTF-8
ngày: Thứ bảy, ngày 14 tháng 8 năm 2021 23:21:34 GMT
hết hạn: Thứ bảy, ngày 14 tháng 8 năm 2021 23:21:34 GMT
vị trí: https://example.com/pages/form-submitted.html#submit
máy chủ: Apache
khác nhau: Tác nhân người dùng
x-được cung cấp bởi: PHP/8.0.8


YÊU CẦU TIÊU ĐỀ
:chính quyền: example.com
:phương pháp: ĐĂNG
:đường dẫn: /php/script.php
:sơ đồ: https
chấp nhận: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3; q=0,9 !
chấp nhận mã hóa: gzip, deflate, br
chấp nhận ngôn ngữ: en-GB,en;q=0.9,es-ES;q=0.8,es;q=0.7,it-IT;q=0.6,it;q=0.5
kiểm soát bộ đệm: không có bộ đệm
độ dài nội dung: 96
loại nội dung: ứng dụng/x-www-form-urlencoding!
không: 1
xuất xứ: https://example.com
pragma: không có bộ đệm
người giới thiệu: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: tài liệu!
sec-fetch-mode: điều hướng!
sec-fetch-site: cùng nguồn gốc
sec-fetch-user: ?1
nâng cấp-không an toàn-yêu cầu: 1
tác nhân người dùng: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/92.0.4515.131 Safari/537.36


DỮ LIỆU MẪU
Họ tên: Thái Thiền
email: [email protected]
số điện thoại: 12345678910
sự đồng ý về quyền riêng tư: bật
Gửi đi: 

Thay vào đó, bên dưới là yêu cầu/phản hồi khi gửi POST bằng cách sử dụng tìm nạp():

TỔNG QUAN
URL yêu cầu: https://example.com/php/script.php
Phương thức yêu cầu: POST
Mã trạng thái: 302 
Địa chỉ từ xa: 160.153.133.187:443
Chính sách giới thiệu: cùng nguồn gốc


TIÊU ĐỀ TRẢ LỜI
kiểm soát bộ đệm: max-age=2741
độ dài nội dung: 0
loại nội dung: văn bản/html; bộ ký tự = UTF-8
ngày: Thứ bảy, ngày 14 tháng 8 năm 2021 23:31:44 GMT
hết hạn: CN, ngày 15 tháng 8 năm 2021 00:17:26 GMT
vị trí: https://example.com/405
máy chủ: Apache
khác nhau: Tác nhân người dùng
x-được cung cấp bởi: PHP/8.0.8


YÊU CẦU TIÊU ĐỀ
:chính quyền: example.com
:phương pháp: ĐĂNG
:đường dẫn: /php/script.php
:sơ đồ: https
Chấp nhận: */*
chấp nhận mã hóa: gzip, deflate, br
chấp nhận ngôn ngữ: en-GB,en;q=0.9,es-ES;q=0.8,es;q=0.7,it-IT;q=0.6,it;q=0.5
kiểm soát bộ đệm: không có bộ đệm
độ dài nội dung: 471
loại nội dung: nhiều phần/biểu mẫu dữ liệu; ranh giới=----WebKitFormBoundary28YayN0mmqwdpQh0
không: 1
xuất xứ: https://example.com
pragma: không có bộ đệm
người giới thiệu: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: rỗng
sec-fetch-mode: cùng nguồn gốc
sec-fetch-site: cùng nguồn gốc
tác nhân người dùng: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/92.0.4515.131 Safari/537.36

DỮ LIỆU MẪU
Họ tên: Thái Thiền
email: [email protected]
số điện thoại: 12345678910
sự đồng ý về quyền riêng tư: bật
Gửi đi:

Tôi có nên thay đổi thứ gì đó phía máy chủ để cho phép các yêu cầu POST đối với tệp cụ thể đó không?

Tuy nhiên, tôi muốn nó chỉ nhận các yêu cầu POST từ JS mà tôi đã viết chứ không phải các thực thể bên ngoài, nhưng tôi không biết chính xác cách thực hiện. Tôi đã thử những gì đã được đề xuất trên câu trả lời này, nhưng nó không hoạt động, máy chủ báo lỗi 500. Tôi cho rằng có thể là do tôi đang sử dụng gói lưu trữ được chia sẻ và tôi không có toàn quyền truy cập vào cài đặt Apache của mình, nhưng tôi không chắc đây là lý do.

Michael Hampton avatar
lá cờ cz
Điều đầu tiên cần làm là thoát khỏi gói lưu trữ được chia sẻ và có được máy chủ của riêng bạn.
Tai avatar
lá cờ jp
Tai
Nhưng đó là một giải pháp đắt tiền hơn để lưu trữ một trang web tĩnh đơn giản với một biểu mẫu liên hệ

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.