안녕하세요, Microsoft Azure Cloud Storage에서 Cors 오류가 발생했습니다.Microsoft Azure 클라우드 저장소의 Cors 오류
다음과 같이 내 SAS를 생성하고 :
CorsRule corsRule = new CorsRule();
corsRule.AllowedOrigins.Add("https://---------------.com");
corsRule.AllowedMethods = CorsHttpMethods.Get | CorsHttpMethods.Post | CorsHttpMethods.Put |
CorsHttpMethods.Options;
corsRule.AllowedHeaders.Add("*");
corsRule.ExposedHeaders.Add("*");
corsRule.MaxAgeInSeconds = (int)TimeSpan.FromDays(5).TotalSeconds;
corsRules.Add(corsRule);
serviceProperty.Cors = corsProperty;
이 때 작동 다음과 같이 내 고르를 설정하고
{"fullurl":"https://ingenovatebeta.blob.core.windows.net/teeessssttt/7554eb72-f361-4715-a255-a5d6922706b0?sv=2013-08-15&sr=b&sig=iVL4zeytgC1H7W09lV2YZspOKlzF433oqsx9I6cfI68%3D&st=2014-10-24T05%3A58%3A13Z&se=2014-10-24T06%3A18%3A13Z&sp=w","HostingSite":"https://ingenovatebeta.blob.core.windows.net/teeessssttt/7554eb72-f361-4715-a255-a5d6922706b0","id":"7554eb72-f361-4715-a255-a5d6922706b0","Token":"?sv=2013-08-15&sr=b&sig=iVL4zeytgC1H7W09lV2YZspOKlzF433oqsx9I6cfI68%3D&st=2014-10-24T05%3A58%3A13Z&se=2014-10-24T06%3A18%3A13Z&sp=w"}
:
public SAS(string containername, string id, SharedAccessBlobPermissions permissions)
{
this.id = id;
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobContainer containerReference = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference("teeessssttt");
if (containerReference.CreateIfNotExists(null, null))
{
BlobConfig.configureCORS();
}
CloudBlockBlob blockBlobReference = containerReference.GetBlockBlobReference(id);
SharedAccessBlobPolicy sharedAccessBlobPolicy = new SharedAccessBlobPolicy()
{
Permissions = permissions
};
DateTime utcNow = DateTime.UtcNow;
sharedAccessBlobPolicy.SharedAccessStartTime = new DateTimeOffset?(utcNow.AddMinutes(-5));
DateTime dateTime = DateTime.UtcNow;
sharedAccessBlobPolicy.SharedAccessExpiryTime = new DateTimeOffset?(dateTime.AddMinutes(15));
string sharedAccessSignature = blockBlobReference.GetSharedAccessSignature(sharedAccessBlobPolicy);
this.HostingSite = blockBlobReference.Uri.AbsoluteUri;
this.Token = sharedAccessSignature;
this.fullurl = string.Concat(this.HostingSite, this.Token);
}
이 같은 것을 생성 나는 단지 GUID에 파일을 업로드한다. 예를 들어 다음과 같은 작품처럼 내 업로드 URI를 설정 :
$.get("/api/sas", (function (json) {
var baseUrl = json.fullurl;
myDropzone.options.url = baseUrl;
myDropzone.processFile(file);
}));
그러나 내 모든 파일을 그냥 GUID의이은 (는) 자기 이미지 등을 검색 할 수없는 파일 이름 또는 확장으로 내 클라우드 스토리지에 끝낸다. 예제에서는 파일 이름을 추가 할 수 있습니다. 나는 예를 따라 갔다 :
$.get("/api/sas", (function (json) {
var baseUrl = json.fullurl;
var indexOfQueryStart = baseUrl.indexOf("?");
submitUri = baseUrl.substring(0, indexOfQueryStart) + '/' + file.name + baseUrl.substring(indexOfQueryStart);
myDropzone.options.url = submitUri;
myDropzone.processFile(file);
}));
그러나 그것은 작동하지 않는다. 이 시점에서 CORS 오류가 발생합니다.
XMLHttpRequest cannot load https://myurl/mycontainer/82b7f14b-ee7c-45a3…2B%2BmtAJw%3D&st=2014-10-23T04%3A34%3A22Z&se=2014-10-23T04%3A54%3A22Z&sp=w. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://stagingrapidrealities.azurewebsites.net' is therefore not allowed access. The response had HTTP status code 403.
'submitUri' 변수가 생성되는 방식에 문제가있는 것처럼 보입니다. 실제 submitUri 변수 값을 표시 할 수 있습니까? –
안녕하세요 @ GauravMantri. 지난 며칠 동안 나는 당신의 튜토리얼을 많이 사용 해왔다.그들에게 고마워. 나는 그들을 사랑한다. submitUri의 값은이 pastebin에 있습니다. http://pastebin.com/sWakXxva하면 URL을 여기에 붙여 넣을 수 없습니다. – w3bMak3r
URL이 괜찮은 것 같습니다. baseUrl도 공유 할 수 있습니까? baseUrl에는 GUID도 포함되어 있다고 추측하고 있지만 확인하고 싶습니다. 또한 SAS URL 생성을위한 코드를 공유 할 수 있다면 도움이 될 것입니다. –