私はPHPでメールサービスを作成しました。このサービスは一部のユーザーに手紙を送ります。ここにコードがあります:AngularJsのCORSリクエスト
<?php
require 'vendor/autoload.php';
header('Content-type : application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, content-type');
$response = array(
'text' => '');
if(!empty($_POST)){
$json = json_decode($_POST["req"]);
$key = $json->key;
$sub = $json->subject;
$toemail = $json->emailTo;
$FromEmail = $json->emailFrom;
$html = $json ->html;
$sendgrid = new SendGrid($key);
$email = new SendGrid\Email();
$email->addTo($toemail)
->setFrom($FromEmail)
->setSubject($sub)
->setHtml($html);
$sendgrid->send($email);
$response['text'] = 'Email was sent from '.$FromEmail.' to'. $toemail.'. Success.';
}else{
$response['text'] = 'Sorry! $_POST is undefind';
}
echo json_encode($response);
?>
Angular.jsを使用してこのサービスにクロスドメイン要求を作成する必要があります。 のXMLHttpRequestがmy.azurewebsites.net/mail.phpロードすることはできません:私は次のエラーを持っている結果
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);
app.controller("emailCtrl", function ($scope, $http) {
var dataForAdminNewsletter = angular.toJson({
key: "********************************************",
subject: "New Email",
emailTo: "[email protected]",
emailFrom: "[email protected]",
html: 'You have a new subscriber' + $scope.emailField
});
$scope.sendPost = function() {
$http({
url: 'http://my.azurewebsites.net/mail.php',
method: "POST",
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: {
"req": dataForAdminNewsletter
}
});
}
});
: はここに私のコードです。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。 Origin 'localhost:11708'はアクセスできません。
サーバー側のコードを変更することはできません。誰かがAngularでこの問題を解決するのに役立つことができますか?
ありがとうございます。
をありがとう、私は私のサーバー側でこれらのヘッダを追加しました:ヘッダ( 'アクセス制御 - 許可 - メソッド:POST、GET、PUT、DELETE、OPTIONS '); –
最初のセクションが重要です。 –
はい、私もそれを追加しました:header( 'Access-Control-Allow-Origin:*'); –