- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我知道有很多这样的问题,但我所见过的都没有解决我的问题。我已经使用了至少 3 个微框架。他们都在做一个简单的 POST 时失败了,这应该返回数据:
angularJS 客户端:
var app = angular.module('client', []);
app.config(function ($httpProvider) {
//uncommenting the following line makes GET requests fail as well
//$httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*';
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});
app.controller('MainCtrl', function($scope, $http) {
var baseUrl = 'http://localhost:8080/server.php'
$scope.response = 'Response goes here';
$scope.sendRequest = function() {
$http({
method: 'GET',
url: baseUrl + '/get'
}).then(function successCallback(response) {
$scope.response = response.data.response;
}, function errorCallback(response) { });
};
$scope.sendPost = function() {
$http.post(baseUrl + '/post', {post: 'data from client', withCredentials: true })
.success(function(data, status, headers, config) {
console.log(status);
})
.error(function(data, status, headers, config) {
console.log('FAILED');
});
}
});
SlimPHP 服务器:
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->response()->headers->set('Access-Control-Allow-Headers', 'Content-Type');
$app->response()->headers->set('Content-Type', 'application/json');
$app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response()->headers->set('Access-Control-Allow-Origin', '*');
$array = ["response" => "Hello World!"];
$app->get('/get', function() use($array) {
$app = \Slim\Slim::getInstance();
$app->response->setStatus(200);
echo json_encode($array);
});
$app->post('/post', function() {
$app = \Slim\Slim::getInstance();
$allPostVars = $app->request->post();
$dataFromClient = $allPostVars['post'];
$app->response->setStatus(200);
echo json_encode($dataFromClient);
});
$app->run();
我已启用 CORS,并且 GET 请求有效。 html 使用服务器发送的 JSON 内容进行更新。但是我得到了一个
XMLHttpRequest 无法加载 http://localhost:8080/server.php/post .预检响应包含无效的 HTTP 状态代码 404
每次我尝试使用 POST。为什么?
最佳答案
编辑:
已经好几年了,但我觉得有必要进一步评论一下。现在我实际上是一名开发人员。对您的后端的请求通常使用您的框架将获取和处理的 token 进行身份验证;这就是缺少的。我实际上根本不确定这个解决方案是如何工作的。
原文:
好的,这就是我的想法。这一切都与 CORS 政策有关。在 POST 请求之前,Chrome 正在执行预检 OPTIONS 请求,该请求应在实际请求之前由服务器处理和确认。现在,对于这样一个简单的服务器,这真的不是我想要的。因此,重置 header 客户端会阻止预检:
app.config(function ($httpProvider) {
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
});
浏览器现在将直接发送 POST。希望这可以帮助很多人......我真正的问题是对 CORS 的了解不够。
链接到一个很好的解释:http://www.html5rocks.com/en/tutorials/cors/
向 this answer 致敬给我指路。
关于javascript - AngularJS POST 失败 : Response for preflight has invalid HTTP status code 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660712/
我已按照此步骤设置我的服务器以启用 CORS。 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-c
这个问题在这里已经有了答案: How to resolve 'preflight is invalid (redirect)' or 'redirect is not allowed for a p
我尝试调用 CORS Rest API,但收到此错误: Failed to load resource: Preflight response is not successful 升级到 iOS10
我创建了一个 Firebase 可调用函数,返回一个简单的文本,但是当我在本地和我部署的应用程序上调用该函数时收到错误。 callable 函数是一个简单的函数,现在可以返回一些文本: exports
在 Windows 上使用 Firefox 45.8.0 ESR。 正在尝试加载 https://secure.scheduleonce.com/dana 页面未加载,在网络面板中我看到一个交叉的挂锁
我创建了一个 phonegap 应用程序,我在其中调用驻留在 nopCommerce 插件中的 WCF 服务。 发送 api 请求时出现以下错误: Cross-Origin Request Block
我在后端使用 vue 和 express + firebase 函数,但它一直给我这个错误。我部署了我的 firebase 函数并使用 localhost 来访问我的服务器。任何人都可以帮忙吗?谢谢!
我正在发出CORS POST请求,并将Content-Type标头设置为json。这会触发“预检选项”请求触发(这是好的,也是预期的) 此选项请求以200 OK响应,但这不是来自我的WebAPI应用程
前端:React 16.12.0 |后端:Spring 2.2.4.RELEASE 我目前面临有关预检 CORS 请求的问题。根据我的理解,每个非简单请求(例如带有授权 token 的 GET)都会触
我正在使用 Spring Boot 版本 2.0.0.M5 我的 JavaScript 应用程序在调用我公开的 Rest 端点时遇到问题。为了安全起见——我希望传入一个包含 api key 的 hea
我使用 Express 作为网络服务器,并使用客户端的同构获取模块来使用 XHR。 我的 Web 应用程序有三台服务器: 端口 3000 -> 管理网站 端口 3001 -> 公共(public)网站
我发现了几个类似的话题。然而,似乎还没有一个起作用。 问题 在我们当前的生态系统中,我们为我们的 http-apis 提供了三个服务器。两个用于测试,一个用于生产。 最近我们发布了使用 Angular
简单请求是满足以下条件的请求: HTTP 方法匹配(区分大小写)以下之一: 负责人 获取 发布 HTTP header 匹配(不区分大小写): 接受 接受语言 内容语言 最后的事件 ID Conten
我创建了登录 FE 并完成了它。和往常一样,我的 ajax goto 是 Axios。我的代码如下。 const baseUrl = http://localhost:5000/project/us-
我正在尝试向 WCF 服务(我拥有的)发出跨域 HTTP 请求。我已经阅读了几种处理跨域脚本限制的技术。因为我的服务必须同时适应 GET 和 POST 请求,所以我无法实现一些动态脚本标记,其 src
我使用react.js(在端口3000上运行)执行以下获取操作 var config = { headers: { 'Access-Control-Allow-Origin': '*',
我正在构建一个与 CakePHP 2.8 中实现的 REST API 对话的 Ionic 1 应用程序,使用 JSON Web Tokens (JWT)用于授权。 在未经授权的状态下,我的应用能够毫无
我创建了一个 RESTapi 来将数据插入我的数据库,它在 POSTMAN 扩展上工作得很好,但我在 angularjs http post 方法上遇到错误。 我的 Restapi 代码是在 yii2
我有一个带有 AngularJS 前端和 Web Api 2 后端的网络应用程序,它使用不记名 token 进行身份验证。 在 FireFox 和 IE 中一切都很好,但在 Chrome 中,我的初始
我正在构建一个网站,该页面使用 Jquery .load() 函数加载导航栏和一些其他资源(如下面的代码所示)。 $(function () { $("#na
我是一名优秀的程序员,十分优秀!