我有一个编写的可视化基本应用程序,安装在AWS Elastic beantalk环境中。我还在AWS S3实例上安装了reactJS应用程序。在reactJS应用程序中,我执行以下提取:
var url = "";
var which = "login";
var passedData = "6007sP0001????DEMI0000000000%20%20%20%20INTERNET/093000050vista19%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20money19%20%20%20";
switch (which) {
case "login":
url = "https://webaccuapi-dv.accurecord-direct.com/api/login?mqRequest=" + passedData;
break;
case "homepage":
url = "https://webaccuapi-dv.accurecord-direct.com/api/homepage?mqRequest=" + passedData;
break;
}
const options = { method: 'GET' };
var returnString = "";
return new Promise((resolve, reject) => {
console.log("do fetch at ", new Date().toLocaleString())
fetch(url, options)
.then(function(response) {
return response.json();
})
.then(function(myJson) {
if (myJson == undefined)
{
returnString = "fetch failed";
}
else
{
returnString = myJson[0];
console.log("return from fetch at ", new Date().toLocaleString())
}
resolve(returnString);
});
});
Visual Basic应用程序中的代码包含以下代码,这些代码是我几个月前在另一篇stackoverflow文章中找到的(但我不记得在哪里):
Imports System.Web.Http
Imports System.Web.Http.Cors
Public Module WebApiConfig
Public Sub Register(ByVal config As HttpConfiguration)
' Web API configuration and services
Dim Cors = New EnableCorsAttribute("http://localhost:8080,http://401kmobileapp.s3-website.us-east-2.amazonaws.com,https://my401kapp.accurecord-direct.com", "*", "*")
config.EnableCors(Cors)
' Web API routes
config.MapHttpAttributeRoutes()
config.Routes.MapHttpRoute(
name:="DefaultApi",
routeTemplate:="api/{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
)
End Sub
End Module
我的理解是有限的,即视觉基本应用程序中的代码应允许处理来自http://localhost:8080,http://401kmobileapp.s3-website.us-east-2.amazonaws.com和https://my401kapp.accurecord-direct.com的请求,以及来自任何其他网址将被CORS拒绝。
不幸的是,由于某种原因,CORS拒绝了我的reactJS的请求。当我启动reactJS应用程序(位于https://my401kapp.accurecord-direct.com/时,我输入用户ID和密码(用户ID为'vista19',密码为'money19')-我不介意共享它们,因为它们是测试用户ID和密码)在浏览器控制台中出现以下错误:
访问地址为 'https://webaccuapi-dv.accurecord-direct.com/api/login?mqRequest=6007sP0001????DEMI0000000000%20%20%20%20INTERNET/093000050vista19%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20money19%20%20%20' 来自来源“ https://my401kapp.accurecord-direct.com”的信息已被阻止 通过CORS策略:在上不存在“ Access-Control-Allow-Origin”标头 请求的资源。如果不透明的响应满足您的需求,请设置 将请求的模式设置为“ no-cors”以使用CORS来获取资源 禁用。
如果我将所有https替换为http,并且只要在我的Visual Basic应用程序的URL列表中有http://localhost:8080,我就可以在开发机器上的localhost上使整个过程正常运行。如果删除http://localhost:8080并在本地运行,则会收到CORS错误。如果我将http://localhost:8080重新放到列表中,我将获得数据。
因此,我知道该过程在http下可以正常工作,但无法在https下运行。