Итак, у меня есть ключ API для моего веб-сервиса. Каждый раз, когда пользователь регистрируется, я отправляю ему электронное письмо для подтверждения своей учетной записи. Это выглядит так:
public class EmailSender {
private static final String username = "[email protected]";
private static final String password = "uthoughiwillshowyoumypassword?";
public static void sendVerificationCode(String receiverusername, String receiveremail, String code) throws Exception {
Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true"); //TLS
Session session = Session.getInstance(prop,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(receiveremail));
message.setSubject("Verification Code");
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("<form action=\"https://pathtomywebserviceurl.com/verify/"+code+"\">\n" +
"<input type=\"submit\" value=\"Verify\" />\n" +
"</form>", "UTF-8", "html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
}
Когда он нажимает на кнопку, пользователь фактически делает запрос к моему веб-сервису со своим токеном в качестве параметра. Но теперь я также хочу, чтобы мой API-ключ был отправлен, например. заголовок http, чтобы я мог извлечь ключ API из запроса проверки пользователя и проверить, равен ли ключ API фактическому ключу API. Сейчас я отправляю только код, но не API-ключ.




Используйте скрытый элемент формы:
<input type = "hidden" id = "myApiKey" name = "myApiKey" value = "myApiKeyValue">
Но тогда он доступен через источник страницы? ?