标签: http-status-code-400

Firebase存储安全规则400错误问题"权限被拒绝.无法访问存储桶xxxxx - ****.appspot.com"

当我试图上传照片时,我的反应项目中我的firebase存储上传400错误导致消息错误消息错误...一切正常工作并成功上传图片,但现在它停止上传照片,发出以下错误,我不知道问题出在哪里......

提示检查的链接

POST https://firebasestorage.googleapis.com/v0/b/xxxxx-****.appspot.com/o?name=usertemp%2F0rdrGK4MRDRptAMCc3mHDveytJv1%2F0rdrGK4MRDRptAMCc3mHDveytJv1.jpg 400 ()
Run Code Online (Sandbox Code Playgroud)

这是链接响应的错误

{
  "error": {
    "code": 400,
    "message": "Permission denied. Could not access bucket xxxxx-****.appspot.com. Please enable Firebase Storage for your bucket by visiting the Storage tab in the Firebase Console and ensure that you have sufficient permission to properly provision resources."
  }
Run Code Online (Sandbox Code Playgroud)

这是我的安全

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth!=null;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我仍然试图改变match/b/xxxxx-****.appspot.com/o与仍然没有成功

http-status-code-400 firebase-security firebase-storage

7
推荐指数
2
解决办法
5928
查看次数

由于maxReceivedMessageSize仍为65536,因此可怕的WCF BAD请求400

上帝,你不喜欢WCF.

我读了所有可能的线程,但我现在真的被卡住了.

这是WCF配置:

<system.serviceModel>
   <bindings>
      <basicHttpBinding>
         <binding name="BaseHttp" 
                  maxBufferSize="4194304" 
                  maxBufferPoolSize="4194304" 
                  maxReceivedMessageSize="4194304"  />
      </basicHttpBinding>
   </bindings>
   <behaviors>
      <serviceBehaviors>
         <behavior name="TaskServiceBehavior">
            <serviceMetadata httpGetEnabled="True" />
            <serviceDebug includeExceptionDetailInFaults="True" />
         </behavior>
         <behavior name="">
            <serviceMetadata httpGetEnabled="true" />
         </behavior>
      </serviceBehaviors>
   </behaviors>
   <services>
      <service behaviorConfiguration="TaskServiceBehavior" name="TaskService">
         <endpoint 
             address="http://www.mysite.com/TableTaskService/TableTaskService.svc" 
             binding="basicHttpBinding" bindingConfiguration="BaseHttp" 
             contract="TableTaskService.ITableTaskService" />
         <endpoint 
             address="mex" 
             binding="mexHttpBinding"  
             contract="IMetadataExchange" />
         <host>
            <baseAddresses>
               <add baseAddress="http://www.mysite.com/TableTaskService/" />
            </baseAddresses>
         </host>
      </service>
   </services>
   <serviceHostingEnvironment>
      <baseAddressPrefixFilters>
         <add prefix="http://www.mysite.com/" />
      </baseAddressPrefixFilters>
   </serviceHostingEnvironment>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

现在我发送一条消息并抛出这个默认异常(在svclog文件中看到):

已超出传入邮件的最大邮件大小限额(65536).要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性.

现在我清楚地说它应该是4mb.

我的客户代码:

TableTaskServiceClient client = 
    new TableTaskServiceClient(
          new BasicHttpBinding { MaxBufferSize = 4194304, …
Run Code Online (Sandbox Code Playgroud)

wcf http-status-code-400

6
推荐指数
1
解决办法
1784
查看次数

SignalR客户端Web可以连接不同PC上的服务器吗?

我的PC上有一个控制台应用程序,即signalR服务器.

我有一个html页面是互联网上的signalR客户端.但我尝试连接服务器,但我有一个错误的请求400错误.如果服务器关闭,我有另一个响应.

signalR客户端是否可以连接PC上的服务器?

(对不起我的英语不好)

我的页面

<input type="text" id="msg" value=" " />
    <input type="button" id="send" value="send" />
    <ul id="message">
    </ul>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-1.1.2.min.js"></script>
    <script>
        $(function () {
            jQuery.support.cors = true;
            // Open a connection to the remote server
            var connection = $.hubConnection('http://MyIpAddress:8080');
            var chat = connection.createHubProxy('chat');

            chat.on('send', function (message) {
                $('#message').append('<li>' + message + '</li>');
            });

            // Turn logging on so we can see the calls in the browser console
            connection.logging = true;

            connection.start().done(function () {
                $('#send').click(function () {
                    chat.invoke('send', …
Run Code Online (Sandbox Code Playgroud)

c# http-status-code-400 signalr signalr.client

6
推荐指数
1
解决办法
1万
查看次数

Spring形式ModelAttribute字段验证,以避免400 Bad Request Error

我有一个ArticleFormModel正常发送的包含数据,html form由Spring使用@ModelAttribute注释注入,即

@RequestMapping(value="edit", method=RequestMethod.POST)
public ModelAndView acceptEdit(@ModelAttribute ArticleFormModel model, 
    HttpServletRequest request, BindingResult errors)
{
    //irrelevant stuff
}
Run Code Online (Sandbox Code Playgroud)

在某些方面,一切都很完美.问题是ArticleFormModel包含一个double字段(protected使用普通的setter设置).只要用户发送的数据是数字,一切正常.当他们输入一个单词时,我得到的只是400 Bad Request Http Error.

我已经WebDataBinder为这个控制器注册了一个

@InitBinder
protected void initBinder(WebDataBinder binder) throws ServletException
{
    binder.setValidator(validator);
}
Run Code Online (Sandbox Code Playgroud)

where validator实现org.springframework.validation.Validator接口的自定义类的实例,但我不知道下一步该做什么.我希望能够解析模型,获得有效的HTTP响应并在表单中显示错误消息.initBinder()调用该方法,我可以从中调用validator.validate(),但它不会更改错误(对于错误的数据).

我知道我可以使用setter来解析字符串,检查它是否为数字,如果没有,将该信息存储在变量中,然后在验证期间检索该变量,但这似乎太多了.必须有一种更简单的方法来强制字段上的类型而不会出现错误.此外,问题在于数据绑定,而不是验证,所以我觉得它应该放在相应的代码层中.

我也在考虑实施java.beans.PropertyEditor和调用binder.registerCustomEditor(),但我缺乏可靠的知识来源.

客户端验证(通过JavaScript检查数据是否为数字)是不可能的.

TL; DR:

如何在@ModelAttribute不获取项目的情况下强制某个字段具有特定类型400 Bad Request Http Error

java spring http-status-code-400 modelattribute

6
推荐指数
1
解决办法
1万
查看次数

HTTP状态400 - 必需整数参数"id"不存在

我在构建Spring + Spring MVC + Hibernate + MySQL项目时遇到了问题.

一切正常但是当我得到"editpage"然后想要将编辑信息发布到MySQL时,我从我的Tomcat收到以下错误:

HTTP Status 400 - Required Integer parameter 'id' is not present
Run Code Online (Sandbox Code Playgroud)

控制器类

@RequestMapping(value = "/users/edit", method = RequestMethod.POST)
public String saveEdit(@ModelAttribute("userAttribute") User user,
                       @RequestParam(value = "id", required =   
true)Integer id, Model model){

    logger.debug("Received request to update person");

    user.setId(id);

    personService.edit(user);

    model.addAttribute("id", id);

    return "editedpage";
}
Run Code Online (Sandbox Code Playgroud)

服务类

public void edit(User user){

    logger.debug("Editing existing user");

    Session session = sessionFactory.getCurrentSession();

    User existingUser = (User) session.get(User.class, user.getId());

    existingUser.setLogin(user.getLogin());
    existingUser.setPassword(user.getPassword());
    existingUser.setReal_name(user.getReal_name());

    session.save(existingUser);
}
Run Code Online (Sandbox Code Playgroud)

我的JSP页面

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc http-status-code-400

6
推荐指数
1
解决办法
3万
查看次数

尝试注册 Google Drive webhook 时出现“必需参数:pageToken”错误

按照此处的指南,我正在尝试设置 Google Drive“推送通知”(网络钩子),以便我可以观察所有文件更改。我需要发送一次性 POST 请求https://www.googleapis.com/drive/v3/changes/watch以初始“注册”网络钩子。但我似乎无法成功地做到这一点;使用curl我收到400 Bad Request回复。

这是我的 HTTP 请求,通过curl

curl 'https://www.googleapis.com/drive/v3/changes/watch' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access_token' \
--data-binary '{"id": "webhook", "type": "web_hook", "address": "https://example.com/webhooks", "token": "example"}' \
-vvvv
Run Code Online (Sandbox Code Playgroud)

响应:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required parameter: pageToken",
    "locationType": "parameter",
    "location": "pageToken"
   }
  ],
  "code": 400,
  "message": "Required parameter: pageToken"
 }
}
Run Code Online (Sandbox Code Playgroud)

我从pageToken哪里得到它?另外,我如何将它包含在请求中(例如作为标头)?指南中没有提到它。

post google-api webhooks http-status-code-400 google-drive-api

6
推荐指数
1
解决办法
1466
查看次数

在实践中区分HTTP状态代码403和409(或400)

即使阅读了许多文档,书籍和规范, 我也无法100%确定我应该使用http状态代码403还是409。

有人认为403应该仅用于授权问题,但是看到twitter的api使用403违反更新限制,我认为403的实际使用范围不仅仅限于授权问题。也许可以用来告诉请求违反了服务器端约束。

而且,从规格上看,当我们可以预期客户端可以解决此问题时,似乎使用409。

我会欣赏现实世界中的各种示例,其中包括何时使用403和何时使用409,以及在我的情况下使用哪种代码的见解,我将在下面的摘要中进行介绍(以免违反NDA) )。

编辑后:该示例很长,但简单地说,它是关于约束验证失败时返回什么代码。当约束验证失败时,您是否总是返回400?我应该返回400,而不是403或409吗?


有一个客户告诉服务A哪个书架包含一本特定的书。在向DB记录哪个书放在哪个书架上时,服务A可以告诉客户该客户正试图将书放在错误的书架上。服务A可以通过询问另一个服务B来告知这一点,该服务B在决定书的去向时基本上具有某种逻辑。

在这种情况下,应该为A服务使用什么http代码?

(该请求与服务B的决定相冲突-409?-但客户端无法解决此问题,因为当服务B做出决定时,该请求是永久性的。书号和书架号都在path参数中(即,它们是此端点中的唯一参数),因此客户端无法真正做出任何更改来解决同一请求的问题)

此外,客户端可以告诉服务A不再使用书架(因为书架已满或出于任何原因)。当客户告诉服务A不再使用书架C,然后客户告诉服务A它想将另一本书放到书架C上时,服务A应该告诉客户它不能这样做。在这种情况下,应该为A服务使用什么http代码?(该请求将与表明书架C未使用的数据库状态发生冲突-409?但是客户端无法解决此问题,因为当不使用书架时,该书架在服务A中是永久的,并且永远不会在使用中再次-不是409?)

预先感谢您的时间和投入!

rest http-status-codes http-status-code-403 http-status-code-400 http-status-code-409

6
推荐指数
1
解决办法
3680
查看次数

请求正文中出现错误时的 HTTP 状态代码

有人可以澄清以下情况下我应该期待什么状态代码吗?例如,我正在发送具有以下正文格式的 POST 请求:

\n\n
{\n  "id": 321,\n  "username": "tombrown",\n  "email": "tombrown@gmail.com",\n  "password": "qwerty123",\n  "activated": true \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以问题是:

\n\n

1)如果我指定错误类型的数据,例如“id”:\xe2\x80\x9ctwoone\xe2\x80\x9d而不是int,服务器是否应该返回400,“activated”:\xe2\x80\x9cyes\xe2 \x80\x9d 而不是布尔值等。或者服务器应该在这里返回 422?

\n\n

2) \xe2\x80\x9cid\xe2\x80\x9d 值应该是 int,但实际上它是 long int,例如 9223372036854774700。

\n\n

3)正文中缺少某些字段,例如我尝试发送:

\n\n
{\n  "id": 321,\n  "username": "tombrown",\n  "activated": true \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些示例是否会导致 400、422 或其他一些选项?什么样的反应应该是正确的?

\n

http http-status-codes http-status-code-400 http-status-code-422

6
推荐指数
1
解决办法
9292
查看次数

对于具有“错误”输入的良好请求,使用什么 HTTP 状态?

我正在编写一个用于验证促销代码的微服务。客户向我发送促销代码和产品 ID (json)。有 200 OK 的情况,代码很好,我为他们的订单申请了折扣。但是有一个错误的情况,促销代码不适用于该产品。我不确定要使用什么响应代码。

这也应该是 200 OK (有某种消息说代码验证失败)?

应该是 400 Bad Request 吗?

两者似乎都不完全合适,当它不是“OK”时说 200 OK 很奇怪,但是 4xx 通常表示请求/http 协议的结构存在问题 - 在这种情况下,请求的结构很好。

api http http-status-codes http-status-code-400 http-status-code-200

5
推荐指数
1
解决办法
1006
查看次数

在 Java Websocket API 客户端中获取响应代码不是 101: 400

我有以下WebSocketJava 客户端代码。

final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build();

            ClientManager client = ClientManager.createClient();
            client.connectToServer(new Endpoint() {

                @Override
                public void onOpen(Session session, EndpointConfig config) {
                    try {
                        session.addMessageHandler((MessageHandler.Whole<String>) message -> {
                            System.out.println("Received message: "+message);
                        });
                        session.getBasicRemote().sendText(SENT_MESSAGE);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }, cec, new URI("wss://ws.bitso.com"));
        } catch (Exception e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我收到此错误。

org.glassfish.tyrus.core.HandshakeException: Response code was not 101: 400
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

java websocket http-status-code-400 tyrus

5
推荐指数
1
解决办法
4704
查看次数