它似乎是一个已知的问题,关于这个主题存在很多问题,但是,我的情况非常奇怪.我有一个部署在tomcat 8.0.36上的简单Web应用程序.我已正确配置CORS:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
浏览器阻止了跨源请求:
请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" https://www.mytestpage.com "访问.响应具有HTTP状态代码403.
在tomcat日志文件中,我也看到403的响应代码.有趣的是,在跨源请求的情况下,我的应用程序的代码永远不会被执行.在到达我的申请之前,请求被阻止,并且立即发送403.我在tomcat面前没有apache,它是简单的tomcat.我尝试了很多东西,包括将原点列入白名单并指定允许的标题 - 没有任何帮助.我还尝试以编程方式设置标头,直到我发现从不执行跨源请求的代码.
UPD:结束点接受POST请求.这些POST请求作为XmlHttpRequests从JS片段发送.
有什么想法可以吗?
ps我可以成功获得相同的原始请求.
我使用Fetch API来获取URL的内容.对于我的内部开发,我试图连接到开发服务器,我收到一个错误.
此服务器的证书无效.您可能连接到假装为"xxx.com"的服务器,这可能会使您的机密信息面临风险.
如何为内部用途禁用SSL /证书检查?或者我有一个xxx.crt文件,如何安装或传递它以获得成功响应.
我知道在过去,自定义标题名称使用前缀"X-"是标准的(我知道它不再被认为是标准的),但我一直无法找到是否有任何标题此命名约定与值之间的关系("application/x-www-form-urlencoded").它是作为后来采用的自定义内容类型值开始的吗?
我在这里找到了这个链接,这当然很有趣,但一直无法找到我的问题的答案.
有人知道这个前缀被选中的原因,以及它的含义是什么?
我实际上正在努力用CORS发出POST请求.
我实际上是一个在我的控制器内部的方法上添加正确响应头的类
using System;
using System.Web.Mvc;
public class AllowCrossSiteAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");
base.OnActionExecuting(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
我就是这样用的
[AllowCrossSite]
public ActionResult GetReportParameters(string IdRapport)
Run Code Online (Sandbox Code Playgroud)
但问题是当我尝试使用自定义标头发出POST请求以传递此特定内容类型时
'Content-Type': 'application/json; charset=utf-8'
Run Code Online (Sandbox Code Playgroud)
我实际上得到了这个响应头
因此,即使我正确地进入属性类,也就像标题没有做任何事情一样.
这是我在Angular 2服务中的前端
const headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8' });
const options = new RequestOptions({ headers: headers , withCredentials: true });
const mock = {
name: 'TitreRegroupement1',
visible: false,
type: 'System.String',
value: 'Test'
};
// tslint:disable-next-line:max-line-length
const …Run Code Online (Sandbox Code Playgroud) 我已经看到多个人提出这个问题了,没有一个答案对我有用.
我正在尝试使用react/axios对google maps api进行API调用.
这是我的获取请求:
componentDidMount() {
axios({
method : 'get',
url : `http://maps.googleapis.com/maps/api/js?key=${key}/`,
headers: {
"Access-Control-Allow-Origin": '*'
"Access-Control-Allow-Methods": 'GET',
},
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
XMLHttpRequest cannot load http://maps.googleapis.com/maps/api/js?
key=xxxxxxxxx/. Response to preflight request doesn't pass access control
check: No 'Access-Control-Allow-Origin' header is present on the
requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我读过其他人都指向https://www.html5rocks.com/en/tutorials/cors/的文章con CORS
但我找不到我的问题的答案.
在一个项目上启用 CORS,尝试在另一个现有项目上执行此操作,但是在编译期间找不到“EnableCors”方法:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableCors();
Run Code Online (Sandbox Code Playgroud)
确切的编译失败错误消息是
“HttpConfiguration”不包含“EnableCors”的定义,并且找不到接受“HttpConfiguration”类型的第一个参数的扩展方法“EnableCors”(您是否缺少 using 指令或程序集引用)
我在这个项目中做了与另一个项目相同的事情:
<package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net451" />
Run Code Online (Sandbox Code Playgroud)
不过,这个项目中有 odata ……我不确定这是否是导致它失败的主要区别。
有任何想法吗?我也试过
Update-Package -reinstall Microsoft.AspNet.WebApi.Cors
Run Code Online (Sandbox Code Playgroud) 我在webpack-dev-server上运行了我的单页应用程序.我可以加载和重新加载我的进入路线localhost:8080,它每次都有效.但是,我localhost:8080/accounts/login只能通过应用程序内的链接加载localhost:8080/accounts/login,即每当我从浏览器刷新按钮重新加载我得到
Cannot GET /accounts/login/
Run Code Online (Sandbox Code Playgroud)
作为服务器响应,我得到了控制台
内容安全策略:页面的设置阻止了自身加载资源("default-src http:// localhost:8080 ").来源:;(函数installGlobalHook(window){....
这是我在单页应用的index.html上的CSP标题
<meta http-equiv="Content-Security-Policy"
content="default-src * 'self' 'unsafe-inline' 'unsafe-eval'">
Run Code Online (Sandbox Code Playgroud)
我也没有使用任何devtool我的webpack.config.json.我错过了什么.
我读了这个问题和 这个问题。前者只解释了“no-cors”与“same-origin”;后者建议 'no-cors' 没有用,因为不透明响应(Javascript 无法读取/执行任何有用的操作):
你基本上从不想在实践中使用 mode: 'no-cors'——除非在一些非常有限的情况下。那是因为设置模式:'no-cors' 实际上对浏览器说的是,“在任何情况下都阻止我的前端 JavaScript 代码查看响应正文和标题的内容。” 在大多数情况下,这显然不是您想要的。
有人可以告诉我们这些“有限情况”的例子是什么,我们希望使用“无cors”(即使响应是不透明的?)
我能想到的唯一情况是一种单向通信;如果客户端向服务器发送 GET 或 POST 就足够了,那么服务器就可以跟踪请求的发生;(例如,增加请求计数器);...
...那么响应是一个 OpaqueResponse 就足够了;即客户端只需要知道请求是否成功(状态 200),不需要任何负载响应。
我的想法是一个有效的例子吗?有人可以推荐其他可能性/用例/'no-cors'用法的例子吗?
我正在使用该serverless框架将我的 lambda 部署到 AWS,并且已经能够通过 Postman 成功地将 POST 请求运行到与我的 lambda 函数关联的 API 网关,但是当我尝试从表单提交(AJAX 请求)运行 POST 请求时本地服务器我收到 502 错误消息,
Access to XMLHttpRequest at 'https://*id*.execute-api.us-east-1.amazonaws.com/prod/message' from origin 'http://localhost:2368' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
这是我没想到的,因为cors我的 set 中有属性serverless.ymlto true,它为 HTTP 端点设置 CORS 配置。这是函数 yaml 设置:
functions:
email:
handler: handler.sendEmail
events:
- http:
path: message
method: post
cors: true
Run Code Online (Sandbox Code Playgroud)
这是 jQuery AJAX 请求:
$.ajax({
type: 'POST',
url: 'https://*id*.execute-api.us-east-1.amazonaws.com/prod/message',
crossDomain: …Run Code Online (Sandbox Code Playgroud) 我正在使用 InAppWebView 通过监听 onLoadResource 来制作视频下载应用程序,甚至抓取用户播放的视频并在 iframe 中删除视频,由于跨源政策,我无法获取 iframe 中的 url (.mp4, .m3u8......),我确实将allowUniversalAccessFromFileURLs和allowFileAccessFromFileURLs设置为true,但没有结果我无法获取iframe调用的资源:/,这是我的初始选项:
initialOptions: InAppWebViewGroupOptions(
android: AndroidInAppWebViewOptions(
supportMultipleWindows: true,
offscreenPreRaster: true,
allowUniversalAccessFromFileURLs: true,
allowFileAccessFromFileURLs: true,
),
crossPlatform: InAppWebViewOptions(
useOnLoadResource: true,
debuggingEnabled: true,
userAgent:
"Mozilla/5.0 (Linux; Android 9; Redmi Note 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36",
javaScriptEnabled: true,
javaScriptCanOpenWindowsAutomatically: true,
)),
Run Code Online (Sandbox Code Playgroud)
如果任何非常熟悉 inappwebview 或 flutter 的人能告诉我如何在 flutter 中禁用跨源策略或如何在不使用代理的情况下监听我的应用程序 http 请求...,我将不胜感激
android cross-domain same-origin-policy flutter flutter-inappwebview
cors ×4
asp.net-mvc ×2
fetch-api ×2
javascript ×2
ajax ×1
android ×1
angular ×1
aws-lambda ×1
axios ×1
c# ×1
certificate ×1
cross-domain ×1
fetch ×1
flutter ×1
google-maps ×1
http ×1
http-headers ×1
mime-types ×1
post ×1
reactjs ×1
tomcat8 ×1
w3c ×1
webpack ×1