Tôi cần gửi cho một số dữ liệu để nghỉ ngơi dịch vụ web. Tôi đã cố gắng mô phỏng API phụ trợ đó hoạt động chính xác nhưng tôi không biết cách ủy quyền cho API đó thông qua tiêu đề.
Trong tiêu đề nên có một: Authorization
được đặt vào Bearer token
Đây là những gì tôi đã thử nhưng không thành công.
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$data = json_encode[$arr];
$token = "ThisIsSomeLongToken";
header["POST ".$path." HTTP/1.1\r\n"];
header["Host: ".$host."\r\n"];
header["Content-type: application/json\r\n"];
header["Authorization: Bearer ".$token." \r\n"];
header["Content-length: " . strlen[$data] . "\r\n"];
header["Connection: close\r\n\r\n"];
header[$data];
Tôi là người mới trong các dịch vụ web trong PHP vì vậy tôi thậm chí không biết liệu điều này có đúng không nhưng nó không gây ra bất kỳ lỗi nào và cũng không làm gì với dịch vụ web.
Tôi có thể hy vọng một số khách hàng tiềm năng trong API REST PHP với các tiêu đề không? Cảm ơn
Hỏi ngày 11 tháng 8 năm 2015 lúc 11:51Aug 11, 2015 at 11:51
Bạn không thể gửi yêu cầu POST bằng cách sử dụng chức năng header[]
. Bạn nên sử dụng cURL
cho điều đó. Kiểm tra tài liệu ở đây. Điều này có thể sẽ làm những gì bạn muốn:
This will probably do what you want:
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
Đã trả lời ngày 11 tháng 8 năm 2015 lúc 12:02Aug 11, 2015 at 12:02
Jan.JJan.JJan.J
3.0101 Huy hiệu vàng23 Huy hiệu bạc32 Huy hiệu đồng1 gold badge23 silver badges32 bronze badges
0
Chào Reddit,
Tôi đang xây dựng dự án lớn đầu tiên của mình bằng Php và JavaScript, bằng cách thực hiện API REST để đăng và lấy dữ liệu từ cơ sở dữ liệu bằng PDO. Cho đến bây giờ, tôi đã sao chép tiêu đề [] khi bắt đầu điểm cuối PHP vào tất cả các điểm cuối phù hợp [nghĩa là nhận được với Get và Post với bài đăng, luôn luôn cho JSON]. Bây giờ, tôi đang tự hỏi liệu tôi có cần tất cả chúng có tính đến
Tôi đang lưu trữ trang web của mình trên máy chủ Apache2, có API trong cùng Vhost với Frontend của tôi, vì vậy tôi không cần CORS.
Tôi chỉ xác thực với JWT cho các yêu cầu POST và gửi nó qua tải trọng.
Các đoạn trích tôi sao chép mỗi lần là: Get [JSON]
header['Access-Control-Allow-Origin: *'];
header['Content-Type: application/json'];
header["Access-Control-Allow-Methods: GET"];
header["Allow: GET, POST, OPTIONS, PUT, DELETE"];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
0POST [JSON]:
header['Access-Control-Allow-Origin: *'];
header['Content-Type: application/json'];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
3header["Allow: GET, POST, OPTIONS, PUT, DELETE"];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
0header['Content-Type: application/json'];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
3header["Allow: GET, POST, OPTIONS, PUT, DELETE"];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
0Post [formData, để tải lên hình ảnh]:
header['Access-Control-Allow-Origin: *'];
$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
7$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
3header["Allow: GET, POST, OPTIONS, PUT, DELETE"];
Authorization
0$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
7$host = "www.example.com";
$path = "/path/to/backend";
$arr = array['caseNumber' => '456456787'];
$token = "ThisIsSomeLongToken";
$ch = curl_init[];
// endpoint url
curl_setopt[$ch, CURLOPT_URL, $host . $path];
// set request as regular post
curl_setopt[$ch, CURLOPT_POST, true];
// set data to be send
curl_setopt[$ch, CURLOPT_POSTFIELDS, http_build_query[$arr]];
// set header
curl_setopt[$ch, CURLOPT_HTTPHEADER, array['Bearer: ' . $token]];
// return transfer as string
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
curl_close[$ch];
3header["Allow: GET, POST, OPTIONS, PUT, DELETE"];
Authorization
0Vì vậy, điều tôi muốn là loại bỏ tất cả những thứ tôi không cần và đảm bảo ứng dụng của mình nhiều nhất có thể. Nhưng tôi cảm thấy như tôi đã sao chép những thứ tôi không cần [đây là lần đầu tiên tôi xây dựng API REST] và hơi lạc lõng và lo lắng về khả năng có một lỗ hổng bảo mật lớn mà ai đó có thể khai thác [mặc dù điều này là một dự án mà tôi mong đợi số lượng người dùng thấp].
Bất kỳ sự giúp đỡ được đánh giá cao! Cảm ơn trước!